MCFrontier.st
author Claus Gittinger <cg@exept.de>
Thu, 03 Nov 2016 13:22:28 +0100
changeset 1014 8e77e7bafd66
parent 629 28fa780afc35
permissions -rw-r--r--
#BUGFIX by cg class: MCMczWriter changed: #flush obsolete method called.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
74
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCFrontier
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'frontier bag'
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
629
28fa780afc35 category change
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
     7
	category:'SCM-Monticello-Versioning'
74
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCFrontier class methodsFor:'instance creation'!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
frontierOn: aVersionInfo
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self frontierOnAll: (Array with: aVersionInfo)
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
frontierOn: aVersionInfo and: otherVersionInfo
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	^ self frontierOnAll: (Array with: aVersionInfo with: otherVersionInfo)
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
frontierOnAll: aCollection
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	| remaining  allVersions |
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	remaining := Bag new.
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	allVersions _ (aCollection gather: [:ea | ea withBreadthFirstAncestors]) asSet.
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	allVersions do: [:ea | remaining addAll: ea ancestors].
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	^self new frontier: aCollection bag: remaining
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
! !
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!MCFrontier methodsFor:'accessing'!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
frontier
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	^frontier
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
! !
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!MCFrontier methodsFor:'advancing'!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
remove: aVersionInfo
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	frontier remove: aVersionInfo.
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	aVersionInfo ancestors  do:
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
		[ :ancestor |
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
			bag remove: ancestor.
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
			(bag occurrencesOf: ancestor) = 0
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
				ifTrue: [frontier add: ancestor]].
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	^aVersionInfo
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
removeAll: collection
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	collection do: [ :n | self remove: n]
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
! !
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!MCFrontier methodsFor:'initialization'!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
frontier: f bag: remaining
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	frontier := f asOrderedCollection.
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	bag := remaining
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
! !
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
!MCFrontier class methodsFor:'documentation'!
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
version
629
28fa780afc35 category change
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
    61
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCFrontier.st,v 1.2 2012-09-11 21:22:09 cg Exp $'
74
aa598691f9aa initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
! !