/
PBClassDefinition.class.st
84 lines (63 loc) · 1.98 KB
/
PBClassDefinition.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Class {
#name : #PBClassDefinition,
#superclass : #Object,
#instVars : [
'classDefinition',
'bootstrapEnvironment'
],
#category : 'Pharo30Bootstrap'
}
{ #category : #'instance-creation' }
PBClassDefinition class >> on: classDefinition environment: aBootstrapEnvironment [
^ self new
initializeOn: classDefinition environment: aBootstrapEnvironment;
yourself
]
{ #category : #accessing }
PBClassDefinition >> allSlots [
^ classDefinition allSlots
]
{ #category : #accessing }
PBClassDefinition >> definesClassVariable: aString [
^ classDefinition instanceSide classVarNames includes: aString
]
{ #category : #'initialize-release' }
PBClassDefinition >> initializeOn: aClassDefinition environment: aBootstrapEnvironment [
classDefinition := aClassDefinition.
bootstrapEnvironment := aBootstrapEnvironment.
]
{ #category : #accessing }
PBClassDefinition >> innerBindingOf: aString [
(self definesClassVariable: aString asSymbol)
ifTrue: [ ^ EPClassVariableBinding new
name: aString asSymbol
ownerName: self name
objectSpace: bootstrapEnvironment;
yourself ].
self sharedPools
do:
[ :pool | (pool innerBindingOf: aString) ifNotNil: [ :binding | ^ binding ] ].
self superclass ifNotNil:[
(self superclass innerBindingOf: aString)
ifNotNil: [ :binding | ^ binding ]].
"If it is a temp or an instance variable"
^ nil
]
{ #category : #accessing }
PBClassDefinition >> name [
^ classDefinition instanceSide name
]
{ #category : #accessing }
PBClassDefinition >> sharedPools [
^ classDefinition instanceSide sharedPools collect: [ :pool |
PBClassDefinition on: pool environment: bootstrapEnvironment ]
]
{ #category : #accessing }
PBClassDefinition >> superclass [
classDefinition superclass ifNil: [ ^ nil ].
^ PBClassDefinition on: classDefinition superclass environment: bootstrapEnvironment
]
{ #category : #accessing }
PBClassDefinition >> usesClassVariable: aString [
^ classDefinition instanceSide allClassVarNames includes: aString
]