packages/DictionaryStack.st
author Claus Gittinger <cg@exept.de>
Tue, 25 Feb 2020 12:24:48 +0100
changeset 4559 e97f85bac732
parent 1443 6dfdf336b472
child 3011 1997ff6e7e55
permissions -rw-r--r--
#REFACTORING by exept class: CVSSourceCodeManager class eliminate withCRs - use c-strings changed: #executeCVSCommand:module:inDirectory:log:pipe:orElseOutputTo:errorTo: #pathesForClasses: #revisionInfoFromString:inClass:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1443
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     1
"
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     2
 COPYRIGHT (c) 2003 by eXept Software AG
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     3
              All Rights Reserved
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     4
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     5
 This software is furnished under a license and may be used
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     6
 only in accordance with the terms of that license and with the
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     8
 be provided or otherwise made available to, or used by, any
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
     9
 other person.  No title to or ownership of the software is
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    10
 hereby transferred.
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    11
"
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    12
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    13
"{ Package: 'stx:libbasic3' }"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    14
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    15
"{ NameSpace: Packages }"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    16
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    17
Object subclass:#DictionaryStack
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    18
	instanceVariableNames:'collection'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    19
	classVariableNames:''
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    20
	poolDictionaries:''
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    21
	category:'Package-helpers'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    22
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    23
1443
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    24
!DictionaryStack class methodsFor:'documentation'!
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    25
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    26
copyright
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    27
"
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    28
 COPYRIGHT (c) 2003 by eXept Software AG
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    29
              All Rights Reserved
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    30
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    31
 This software is furnished under a license and may be used
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    32
 only in accordance with the terms of that license and with the
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    34
 be provided or otherwise made available to, or used by, any
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    35
 other person.  No title to or ownership of the software is
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    36
 hereby transferred.
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    37
"
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
    38
! !
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    39
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    40
!DictionaryStack class methodsFor:'instance creation'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    41
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    42
new
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    43
    ^ self basicNew initialize.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    44
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    45
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    46
!DictionaryStack methodsFor:'* As yet uncategorized *'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    47
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    48
collect:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    49
    ^ collection values collect:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    50
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    51
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    52
!DictionaryStack methodsFor:'adding & removing'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    53
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    54
atKey:aSymbol 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    55
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    56
    ^ collection at:aSymbol
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    57
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    58
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    59
atKey:aSymbol ifAbsent:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    60
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    61
    ^ collection at:aSymbol ifAbsent:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    62
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    63
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    64
pop
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    65
    collection removeKey:collection last key
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    66
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    67
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    68
pop:aNumber 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    69
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    70
    aNumber timesRepeat:[ self pop].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    71
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    72
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    73
popAt:aKey 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    74
    collection removeKey:aKey.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    75
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    76
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    77
popAt:aKey ifAbsent:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    78
    collection removeKey:aKey ifAbsent:aBlock.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    79
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    80
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    81
pull
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    82
    ^ self pop
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    83
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    84
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    85
pull:aNumber
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    86
    | col |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    87
    col :=  collection last:aNumber.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    88
    self pop:aNumber.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    89
    ^ col
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    90
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    91
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    92
pullAt:aKey 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    93
    ^ collection removeKey:aKey.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    94
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    95
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    96
pullAt:aKey ifAbsent:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    97
    ^ collection removeKey:aKey ifAbsent:aBlock.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    98
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    99
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   100
push:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   101
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   102
    ^ collection at:aPackage name put:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   103
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   104
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   105
removeKey:aSymbol 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   106
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   107
    ^ collection removeKey:aSymbol
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   108
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   109
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   110
top
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   111
    ^ collection last value
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   112
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   113
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   114
!DictionaryStack methodsFor:'enumerating'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   115
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   116
do:aBlock 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   117
    "goes through all the objects in the collection"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   118
    collection reverseDo:[:anAssociation | aBlock value:anAssociation value]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   119
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   120
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   121
select:aBlock 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   122
    ^ collection values select:aBlock
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   123
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   124
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   125
!DictionaryStack methodsFor:'initialization'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   126
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   127
initialize
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   128
    collection := OrderedDictionary new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   129
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   130
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   131
!DictionaryStack methodsFor:'queries'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   132
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   133
includes:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   134
    ^ collection includes:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   135
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   136
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   137
includesKey:aKey
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   138
    ^ (collection includesKey:aKey)
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   139
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   140
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   141
isEmpty
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   142
    ^ collection isEmpty
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   143
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   144
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   145
size
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   146
    ^ collection size
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   147
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   148
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   149
!DictionaryStack class methodsFor:'documentation'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   150
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   151
version
1443
6dfdf336b472 copyright
Claus Gittinger <cg@exept.de>
parents: 1231
diff changeset
   152
    ^ '$Header: /cvs/stx/stx/libbasic3/packages/DictionaryStack.st,v 1.2 2006-01-10 09:25:12 cg Exp $'
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   153
! !