extensions.st
author Claus Gittinger <cg@exept.de>
Mon, 26 Oct 2009 23:00:28 +0100
changeset 160 c26ad17d4dc7
parent 150 bd3dcb1bc4fc
child 182 09c4caf9e56e
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     2
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     3
!Behavior methodsFor:'* monticello'!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     4
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     5
typeOfClass
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     6
    "Answer a symbol uniquely describing the type of the receiver"
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     7
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     8
    "/ self instSpec = CompiledMethod instSpec ifTrue:[^#compiledMethod]. "Very special!!"
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     9
    (self isSubclassOf:#CompiledCode) ifTrue:[^#compiledMethod]. "Very special!!"
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    10
    self isBytes ifTrue:[^#bytes].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    11
    (self isWords and:[self isPointers not]) ifTrue:[^#words].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    12
    (self isLongs and:[self isPointers not]) ifTrue:[^#longs].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    13
    self isWeakPointers ifTrue:[^#weak].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    14
    "/ self isWeak ifTrue:[^#weak].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    15
    self isVariable ifTrue:[^#variable].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    16
    ^#normal.
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    17
! !
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    18
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    19
!Class methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    20
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    21
asClassDefinition
160
c26ad17d4dc7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 150
diff changeset
    22
        self isLoaded ifFalse:[
c26ad17d4dc7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 150
diff changeset
    23
            ^ self autoload asClassDefinition
c26ad17d4dc7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 150
diff changeset
    24
        ].
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    25
        ^ MCClassDefinition
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    26
                name: self name
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    27
                superclassName: self superclass name
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    28
                category: self category 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    29
                instVarNames: self instVarNames
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    30
                classVarNames: self classVarNames
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    31
                poolDictionaryNames: self poolDictionaryNames
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    32
                classInstVarNames: self class instVarNames
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    33
                type: self typeOfClass
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    34
                comment: (Smalltalk isSmalltalkX ifTrue:[self comment] ifFalse:[ self organization classComment asString ])
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    35
                commentStamp: (Smalltalk isSmalltalkX ifTrue:[nil] ifFalse:[self organization commentStamp])    
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    36
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    37
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    38
!Class methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    39
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    40
classDefinitions
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    41
	^ Array with: self asClassDefinition
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    42
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    43
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    44
!Class methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    45
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    46
poolDictionaryNames
160
c26ad17d4dc7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 150
diff changeset
    47
        ^ self sharedPools "/ collect: [:ea | ea name "self environment keyAtIdentityValue: ea"]
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    48
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    49
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    50
!ClassBuilder methodsFor:'compatibility - squeak'!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    51
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    52
name:newName 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    53
    inEnvironment:aSystemDictionaryOrClass 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    54
    subclassOf:aClass
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    55
    type: type 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    56
    instanceVariableNames: stringOfInstVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    57
    classVariableNames: stringOfClassVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    58
    poolDictionaries: stringOfPoolNames
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    59
    category: categoryString
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    60
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    61
    |variableBoolean wordsBoolean pointersBoolean|
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    62
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    63
    variableBoolean := wordsBoolean := pointersBoolean := false.
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    64
    type ~~ #normal ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    65
self halt:'todo'.
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    66
    ].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    67
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    68
    self 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    69
        name:newName 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    70
        inEnvironment:aSystemDictionaryOrClass 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    71
        subclassOf:aClass 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    72
        instanceVariableNames:stringOfInstVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    73
        variable:variableBoolean 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    74
        words:wordsBoolean 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    75
        pointers:pointersBoolean 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    76
        classVariableNames:stringOfClassVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    77
        poolDictionaries:stringOfPoolNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    78
        category:categoryString 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    79
        comment:''
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    80
        changed:false
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    81
        classInstanceVariableNames:''. 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    82
! !
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    83
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    84
!Object methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    85
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    86
isConflict
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    87
	^false
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    88
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    89
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    90
!Stream methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    91
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    92
isMessageStream
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    93
	^ false
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    94
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    95
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    96
!String methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    97
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    98
extractNumber
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
    99
	^ ('0', self select: [:ea | ea isDigit]) asNumber
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   100
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   101
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   102
!UndefinedObject methodsFor:'* monticello'!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   103
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   104
typeOfClass
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   105
    "Necessary to support disjoint class hierarchies."
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   106
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   107
    ^#normal
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   108
! !
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   109