RGTraitDefinition.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 02 Sep 2015 18:29:03 +0100
changeset 5 5cc2caa88b23
parent 0 43cb9f3e345e
permissions -rw-r--r--
SOme fixes in containes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/ring' }"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
RGTraitDescriptionDefinition subclass:#RGTraitDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'metaClass comment category package'
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Ring-Core-Kernel'
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
RGTraitDefinition comment:'RGTraitDefinition is the concrete representation of a trait (no class)'
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
!RGTraitDefinition methodsFor:'accessing'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
category
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Retrieves the tag-package associated to the receiver"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    ^category
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
category: aSymbol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    category:= aSymbol
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
classVariables
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    ^#()
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
comment
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    "Retrieves the comment definition object associated to the receiver"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    ^comment
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
comment: anObject
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    "Sets a RGCommentDefinition object based on the argument"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    comment := anObject isRingObject 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
        ifFalse: [ 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
            RGCommentDefinition new
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
                parent: self;
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
                content: anObject; 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
                yourself ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
        ifTrue: [anObject ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
instanceVariables
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    ^#()
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
package
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    "Retrieves the package in which this trait is contained"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    ^package
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
package: aRGPackage
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    "Sets the package in which this trait is contained"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    package:= aRGPackage
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
sharedPools
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    ^#()
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
stamp
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ^self hasComment ifTrue:[ self comment stamp ] ifFalse:[ nil ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
stamp: aString
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    self hasComment
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    ifTrue: [ self comment stamp: aString ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    ifFalse:[ RGCommentDefinition new
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
                         parent: self; 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
                         stamp: aString ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
theMetaClass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    ^metaClass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
theNonMetaClass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    ^self
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
!RGTraitDefinition methodsFor:'behavior'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
withMetaclass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "Registers explicitly the metaclass of a trait"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    metaClass:= RGMetatraitDefinition class: self.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
withMetaclass: aRGMetatraitDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    "Registers explicitly the metaclass of a class"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    metaClass:= aRGMetatraitDefinition.
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    metaClass baseClass: self.  
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
!RGTraitDefinition methodsFor:'testing'!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
hasComment
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    ^comment isEmptyOrNil not
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
hasMetaclass
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    ^metaClass notNil
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
hasStamp
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    ^self stamp isEmptyOrNil not
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
!
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
isSameRevisionAs: aRGTraitDefinition
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    "This method look for equality of the properties of the receiver"
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    ^(super isSameRevisionAs: aRGTraitDefinition)
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        and: [ self category = aRGTraitDefinition category 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
        and: [ self traitCompositionSource = aRGTraitDefinition traitCompositionSource 
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
        and: [ ((self hasComment and: [ self comment isSameRevisionAs: aRGTraitDefinition comment ]) or:[ self hasComment not ])
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
        and: [ (self theMetaClass isSameRevisionAs: aRGTraitDefinition theMetaClass) ] ] ] ]
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
! !
43cb9f3e345e Initial port form Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139