MCClassDefinition.st
author Claus Gittinger <cg@exept.de>
Mon, 26 Oct 2009 20:38:52 +0100
changeset 156 d565f9e9cee1
parent 48 1e383209540d
child 214 95e0329274f2
permissions -rw-r--r--
changed: #createClass #initializeWithName:superclassName:category:instVarNames:classVarNames:poolDictionaryNames:classInstVarNames:type:comment:commentStamp:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCDefinition subclass:#MCClassDefinition
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'name superclassName variables category type comment commentStamp'
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Modeling'
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCClassDefinition class methodsFor:'instance creation'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
type: typeSymbol
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
commentStamp: stampString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	^ self instanceLike:
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
		(self new initializeWithName: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
					superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
					category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
					instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
					classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
					poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
					classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
					type: typeSymbol
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
					comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
					commentStamp: stampString)
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!MCClassDefinition class methodsFor:'obsolete'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	^ self	name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
			superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
			category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
			instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
			classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
			poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
			classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
			type: #normal
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
			comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
type: typeSymbol
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	^ self 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
		name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
		superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
		instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
		classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
		poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
		classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
		type: typeSymbol
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
		comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
		commentStamp: nil
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	^ self	name: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
			superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
			category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
			instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
			classVarNames: #()
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
			poolDictionaryNames: #()
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
			classInstVarNames: #()
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
			comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!MCClassDefinition methodsFor:'accessing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
actualClass
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
	^Smalltalk classNamed: self className
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
category
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	^ category
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
classInstVarNames
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	^ self selectVariables: #isClassInstanceVariable
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
className
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	^ name
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
classVarNames
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	^ self selectVariables: #isClassVariable
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
comment
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	^ comment
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
commentStamp
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
	^ commentStamp
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
description
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	^ Array with: name
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
instVarNames
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
	^ self selectVariables: #isInstanceVariable
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
poolDictionaries
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
	^ self selectVariables: #isPoolImport
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
selectVariables: aSelector
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
	^ variables select: [:v | v perform: aSelector] thenCollect: [:v | v name]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
sortKey
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	^ self className
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
superclassName
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
	^ superclassName
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
type
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	^ type
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
variables
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
	^ variables
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
!MCClassDefinition methodsFor:'annotations'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
printAnnotations: requests on: aStream
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
	"Add a string for an annotation pane, trying to fulfill the annotation requests.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
	These might include anything that
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
		Preferences defaultAnnotationRequests 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
	might return. Which includes anything in
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
		Preferences annotationInfo
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
	To edit these, use:"
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
	"Preferences editAnnotations"
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
	requests do: [ :aRequest |
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
		aRequest == #requirements ifTrue: [
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
			self requirements do: [ :req | aStream nextPutAll: req ] separatedBy: [ aStream space ]]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
	] separatedBy: [ aStream space ].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
!MCClassDefinition methodsFor:'comparing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
= aDefinition
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
	^ ((super = aDefinition)
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
		and: [superclassName = aDefinition superclassName]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
		and: [category = aDefinition category]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
		and: [type = aDefinition type])
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
		and: [variables = aDefinition variables]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
		and: [comment = aDefinition comment]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
		
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
hash
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
	| hash |
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
	hash _ String stringHash: name initialHash: 0.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
	hash _ String stringHash: superclassName initialHash: hash.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
	hash _ String stringHash: (category ifNil: ['']) initialHash: hash.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
	hash _ String stringHash: type initialHash: hash.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
	variables do: [
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
		:v |
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
		hash _ String stringHash: v name initialHash: hash.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
	].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
	^ hash
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
provisions
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
	^ Array with: name
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
requirements
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
	^ (Array with: superclassName), self poolDictionaries
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
!MCClassDefinition methodsFor:'initializing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
addVariables: aCollection ofType: aClass
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
	variables addAll: (aCollection collect: [:var | aClass name: var asString]).
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
defaultCommentStamp
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
	^ String new
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
	"The version below avoids stomping on stamps already in the image
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
	^ (Smalltalk at: name ifPresent: [:c | c organization commentStamp])
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
		ifNil: ['']
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
	"
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
!MCClassDefinition methodsFor:'installing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
createClass
156
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   225
        | superClass rslt |
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   226
        superClass _ Smalltalk at: superclassName.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   227
        rslt := (ClassBuilder new)
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   228
                        name: name 
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   229
                        inEnvironment: superClass environment 
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   230
                        subclassOf: superClass
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   231
                        type: type 
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   232
                        instanceVariableNames: self instanceVariablesString 
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   233
                        classVariableNames: self classVariablesString 
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   234
                        poolDictionaries: self sharedPoolsString
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   235
                        category: category.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   236
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   237
        "/ ST/X returns the builder; squeak the ready-made class
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   238
        Smalltalk isSmalltalkX ifTrue: [
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   239
            rslt := rslt buildClass.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   240
        ].  
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   241
        ^ rslt
48
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
load
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
	 self createClass ifNotNilDo:
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
		[:class |
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
		class class instanceVariableNames: self classInstanceVariablesString.
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
		self hasComment ifTrue: [class classComment: comment stamp: commentStamp]]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
stringForVariablesOfType: aSymbol
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
	^ String streamContents:
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
		[:stream |
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
		(self selectVariables: aSymbol) 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
			do: [:ea | stream nextPutAll: ea]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
			separatedBy: [stream space]]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
unload
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
	Smalltalk removeClassNamed: name
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!MCClassDefinition methodsFor:'printing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
classInstanceVariablesString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
	^ self stringForVariablesOfType: #isClassInstanceVariable
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
classVariablesString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
	^ self stringForVariablesOfType: #isClassVariable
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
definitionString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
	^ String streamContents: [:stream | self printDefinitionOn: stream]
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
instanceVariablesString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
	^ self stringForVariablesOfType: #isInstanceVariable
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
kindOfSubclass
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
	type = #normal ifTrue: [^ ' subclass: '].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
	type = #words ifTrue: [^ ' variableWordSubclass: '].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
	type = #variable ifTrue: [^ ' variableSubclass: '].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
	type = #bytes ifTrue: [^ ' variableByteSubclass: '].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
	type = #weak ifTrue: [^ ' weakSubclass: ' ].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
	type = #compiledMethod ifTrue: [^ ' variableByteSubclass: ' ].
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
	self error: 'Unrecognized class type'
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
printDefinitionOn: stream
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
		stream 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
			nextPutAll: self superclassName;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
			nextPutAll: self kindOfSubclass;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
			nextPut: $# ;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
			nextPutAll: self className;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
			cr; tab;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
			nextPutAll: 'instanceVariableNames: ';
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
			store: self instanceVariablesString;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
			cr; tab;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
			nextPutAll: 'classVariableNames: ';
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
			store: self classVariablesString;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
			cr; tab;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
			nextPutAll: 'poolDictionaries: ';
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
			store: self sharedPoolsString;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
			cr; tab;
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
			nextPutAll: 'category: ';
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
			store: self category asString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
sharedPoolsString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
	^ self stringForVariablesOfType: #isPoolImport
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
source
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
	^ self definitionString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
summary
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
	^ name
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
!MCClassDefinition methodsFor:'serializing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
initializeWithName: nameString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
superclassName: superclassString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
category: categoryString 
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
instVarNames: ivarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
classVarNames: cvarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
poolDictionaryNames: poolArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
classInstVarNames: civarArray
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
type: typeSymbol
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
comment: commentString
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
commentStamp: stampStringOrNil
156
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   335
        name _ nameString asSymbol.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   336
        superclassName _ superclassString ifNil: ['nil'] ifNotNil: [superclassString asSymbol].
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   337
        category _ categoryString.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   338
        name = #CompiledMethod ifTrue: [type _ #compiledMethod] ifFalse: [type _ typeSymbol].
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   339
        commentString notNil ifTrue:[ comment _ commentString withSqueakLineEndings ].
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   340
        commentStamp _ stampStringOrNil ifNil: [self defaultCommentStamp].
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   341
        variables _ OrderedCollection  new.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   342
        self addVariables: ivarArray ofType: MCInstanceVariableDefinition.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   343
        self addVariables: cvarArray ofType: MCClassVariableDefinition.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   344
        self addVariables: poolArray ofType: MCPoolImportDefinition.
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   345
        self addVariables: civarArray ofType: MCClassInstanceVariableDefinition.
48
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
!MCClassDefinition methodsFor:'testing'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
hasClassInstanceVariables
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
	^ (self selectVariables: #isClassInstanceVariable) isEmpty not
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
hasComment
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
	^ comment notNil and: [comment ~= '']
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
isClassDefinition
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
	^ true
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
isCodeDefinition
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
	^ true
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
!MCClassDefinition methodsFor:'visiting'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
accept: aVisitor
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
	^ aVisitor visitClassDefinition: self
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
! !
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
!MCClassDefinition class methodsFor:'documentation'!
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
version
156
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   375
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinition.st,v 1.2 2009-10-26 19:38:52 cg Exp $'
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   376
!
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   377
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   378
version_CVS
d565f9e9cee1 changed:
Claus Gittinger <cg@exept.de>
parents: 48
diff changeset
   379
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinition.st,v 1.2 2009-10-26 19:38:52 cg Exp $'
48
1e383209540d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
! !