MCClassTraitDefinition.st
author Claus Gittinger <cg@exept.de>
Fri, 18 Jan 2013 18:45:13 +0100
changeset 727 d4ecd56dac5a
parent 715 3dfd1f8f35c8
child 775 618ab2073034
permissions -rw-r--r--
class: MCClassTraitDefinition changed: #asChange

"{ Package: 'stx:goodies/monticello' }"

MCDefinition subclass:#MCClassTraitDefinition
	instanceVariableNames:'baseTrait classTraitComposition category'
	classVariableNames:''
	poolDictionaries:''
	category:'SCM-Monticello-Modeling'
!


!MCClassTraitDefinition class methodsFor:'as yet unclassified'!

baseTraitName: aString classTraitComposition: classTraitCompositionString
	^self instanceLike: (
		self new
			initializeWithBaseTraitName: aString
			classTraitComposition: classTraitCompositionString).
! !

!MCClassTraitDefinition methodsFor:'accessing'!

= aDefinition
	^ (super = aDefinition)
		and: [baseTrait = aDefinition baseTrait]
		and: [self classTraitCompositionString = aDefinition classTraitCompositionString]


!

baseTrait
	^baseTrait

!

className
	^self baseTrait
!

classTraitComposition
	^classTraitComposition


!

classTraitCompositionString
	^self classTraitComposition ifNil: ['{}'].


!

definitionString
	^self baseTrait , ' classTrait
	uses: ' , self classTraitCompositionString.

!

description
	^Array
		with: baseTrait
		with: classTraitComposition
!

hash
	| hash |
	hash := String stringHash: baseTrait initialHash: 0.
	hash := String stringHash: self classTraitCompositionString initialHash: hash.
	^hash

!

requirements
	^Array with: baseTrait
!

source
	^self definitionString
! !

!MCClassTraitDefinition methodsFor:'comparing'!

sortKey
        ^ self baseTrait "name" , '.classTrait'

    "Modified: / 14-09-2010 / 20:59:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!MCClassTraitDefinition methodsFor:'converting'!

asChange
    ^TraitDefinitionChange new
        mcDefinition: self;
        baseTrait: baseTrait;
        traitComposition: classTraitComposition;
        category: category;
        yourself
! !

!MCClassTraitDefinition methodsFor:'initialization'!

initializeWithBaseTraitName: aTraitName classTraitComposition: aString
	baseTrait := aTraitName.
	classTraitComposition := aString.
! !

!MCClassTraitDefinition methodsFor:'installing'!

load	
	Compiler evaluate: self definitionString
! !

!MCClassTraitDefinition methodsFor:'printing'!

summary
	^self baseTrait , ' classTrait'

! !

!MCClassTraitDefinition methodsFor:'testing'!

isClassDefinition
	"Traits are treated the same like classes."
	
	^ true
! !

!MCClassTraitDefinition methodsFor:'visiting'!

accept: aVisitor
	^ aVisitor visitClassTraitDefinition: self.
! !

!MCClassTraitDefinition class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassTraitDefinition.st,v 1.5 2013-01-18 17:45:13 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassTraitDefinition.st,v 1.5 2013-01-18 17:45:13 cg Exp $'
!

version_SVN
    ^ '§Id: MCClassTraitDefinition.st 12 2010-09-15 13:13:22Z vranyj1 §'
! !