RGMetaclassDefinition.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 02 Sep 2015 18:29:03 +0100
changeset 5 5cc2caa88b23
parent 3 ed5aae792d24
permissions -rw-r--r--
SOme fixes in containes

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

"{ NameSpace: Smalltalk }"

RGClassDescriptionDefinition subclass:#RGMetaclassDefinition
	instanceVariableNames:'baseClass'
	classVariableNames:''
	poolDictionaries:''
	category:'Ring-Core-Kernel'
!

RGMetaclassDefinition comment:'RGMetaclassDefinition is a concrete representation of metaclasses of classes (traits are excluded)'
!


!RGMetaclassDefinition class methodsFor:'class initialization'!

class: anORClassDefinition

    ^self new
        baseClass: anORClassDefinition;
        yourself
! !

!RGMetaclassDefinition methodsFor:'accessing'!

baseClass: aRGClassDefinition
    baseClass:= aRGClassDefinition.
    baseClass name notNil ifTrue:[ 
        self name: (baseClass name, ' class') asSymbol
    ].

    "Modified: / 29-08-2015 / 12:03:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

category
    ^ self theNonMetaClass category
!

environment

    ^baseClass environment
!

package

    ^baseClass package
!

realClass

    ^baseClass realClass theMetaClass

    "Modified: / 29-08-2015 / 10:27:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

theMetaClass

    ^self
!

theNonMetaClass

    ^baseClass
! !

!RGMetaclassDefinition methodsFor:'printing'!

storeOn: aStream
    
    aStream nextPut: $(. 
    super storeOn: aStream.
    aStream nextPutAll: ' baseClass:'.
    self theNonMetaClass storeOn: aStream.
    aStream nextPut: $).
    
! !

!RGMetaclassDefinition methodsFor:'testing'!

isMeta

    ^true
!

isSameRevisionAs: aRGMetaclassDefinition
    "This method look for equality of the properties of the receiver"

    ^(super isSameRevisionAs: aRGMetaclassDefinition)
        and:[ self traitCompositionSource = aRGMetaclassDefinition traitCompositionSource ]
! !

!RGMetaclassDefinition methodsFor:'variables'!

allClassVarNames

    ^self theNonMetaClass allClassVarNames
!

allSharedPoolNames

    ^self theNonMetaClass allSharedPoolNames
! !


!RGMetaclassDefinition class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !