SharedPool.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 20 Dec 2010 07:13:27 +0000
branchjv
changeset 17814 b75a7f0c346b
parent 17807 06cc6c49e291
child 17815 956b46750806
permissions -rw-r--r--
Merged with /trunk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8728
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     1
"
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     2
 COPYRIGHT (c) 2004 by eXept Software AG
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     3
              All Rights Reserved
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     4
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     5
 This software is furnished under a license and may be used
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     6
 only in accordance with the terms of that license and with the
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     8
 be provided or otherwise made available to, or used by, any
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
     9
 other person.  No title to or ownership of the software is
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    10
 hereby transferred.
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    11
"
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
68e006f46d87 initial checkin
ca
parents:
diff changeset
    13
68e006f46d87 initial checkin
ca
parents:
diff changeset
    14
Object subclass:#SharedPool
68e006f46d87 initial checkin
ca
parents:
diff changeset
    15
	instanceVariableNames:''
68e006f46d87 initial checkin
ca
parents:
diff changeset
    16
	classVariableNames:''
68e006f46d87 initial checkin
ca
parents:
diff changeset
    17
	poolDictionaries:''
68e006f46d87 initial checkin
ca
parents:
diff changeset
    18
	category:'Kernel-Classes'
68e006f46d87 initial checkin
ca
parents:
diff changeset
    19
!
68e006f46d87 initial checkin
ca
parents:
diff changeset
    20
68e006f46d87 initial checkin
ca
parents:
diff changeset
    21
!SharedPool class methodsFor:'documentation'!
68e006f46d87 initial checkin
ca
parents:
diff changeset
    22
8728
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    23
copyright
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    24
"
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    25
 COPYRIGHT (c) 2004 by eXept Software AG
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    26
              All Rights Reserved
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    27
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    28
 This software is furnished under a license and may be used
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    29
 only in accordance with the terms of that license and with the
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    31
 be provided or otherwise made available to, or used by, any
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    32
 other person.  No title to or ownership of the software is
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    33
 hereby transferred.
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    34
"
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    35
!
d70396dc4e96 copyright
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
    36
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    37
documentation
68e006f46d87 initial checkin
ca
parents:
diff changeset
    38
"
68e006f46d87 initial checkin
ca
parents:
diff changeset
    39
    A shared pool represents a set of bindings which are accessible to all classes
68e006f46d87 initial checkin
ca
parents:
diff changeset
    40
    which import the pool in its 'pool dictionaries'.
68e006f46d87 initial checkin
ca
parents:
diff changeset
    41
    SharedPool is NOT a dictionary but rather a name space.
68e006f46d87 initial checkin
ca
parents:
diff changeset
    42
    Bindings are represented by 'class variables' - as long as we have no better way to represent
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    43
    them at least. This is done to make stc happy (or at least, to not be forced to adapt it
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    44
    to any new semantics).
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    45
"
68e006f46d87 initial checkin
ca
parents:
diff changeset
    46
! !
68e006f46d87 initial checkin
ca
parents:
diff changeset
    47
9091
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    48
!SharedPool class methodsFor:'Compatibility-V''Age'!
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    49
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    50
declareConstant:constantName value:value
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    51
    self == SharedPool ifTrue:[ self error ].
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    52
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    53
    (self classVarNames includes:constantName) ifFalse:[
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    54
        self addClassVarName:constantName
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    55
    ].
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    56
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    57
    self classVarAt:constantName put:value.
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    58
! !
35b746ada800 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8728
diff changeset
    59
17807
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    60
!SharedPool class methodsFor:'misc ui support'!
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    61
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    62
iconInBrowserSymbol
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    63
    <resource: #programImage>
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    64
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    65
    self == SharedPool ifTrue:[^ super iconInBrowserSymbol].
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    66
    ^ #sharedPoolBrowserIcon
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    67
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    68
    "Created: / 14-10-2010 / 12:04:32 / cg"
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    69
! !
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
    70
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    71
!SharedPool class methodsFor:'name lookup'!
68e006f46d87 initial checkin
ca
parents:
diff changeset
    72
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    73
at:name
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    74
    "retrieve a pool variable by name"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    75
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    76
    ^ self at:name ifAbsent:[self errorKeyNotFound:name]
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    77
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    78
10853
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
    79
at:name ifAbsent:aBlock
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    80
    "retrieve a pool variable by name"
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    81
10853
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
    82
    (self includesKey:name) ifFalse:[^ aBlock value].
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
    83
    ^ self classVarAt:name
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
    84
!
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
    85
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    86
bindingOf: varName
68e006f46d87 initial checkin
ca
parents:
diff changeset
    87
    "Answer the binding of some variable resolved in the scope of the receiver"
68e006f46d87 initial checkin
ca
parents:
diff changeset
    88
68e006f46d87 initial checkin
ca
parents:
diff changeset
    89
    | aSymbol binding |
68e006f46d87 initial checkin
ca
parents:
diff changeset
    90
11305
83f14d00b6a7 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 10853
diff changeset
    91
    self shouldImplement.       "not yet finished"
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    92
    aSymbol := varName asSymbol.
68e006f46d87 initial checkin
ca
parents:
diff changeset
    93
68e006f46d87 initial checkin
ca
parents:
diff changeset
    94
    "First look in classVar dictionary."
68e006f46d87 initial checkin
ca
parents:
diff changeset
    95
    binding := self classPool bindingOf: aSymbol.
17795
569eec7576f1 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17780
diff changeset
    96
    binding notNil ifTrue:[^binding].
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
    97
68e006f46d87 initial checkin
ca
parents:
diff changeset
    98
    "Next look in shared pools."
68e006f46d87 initial checkin
ca
parents:
diff changeset
    99
    self sharedPools do:[:pool |
17795
569eec7576f1 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17780
diff changeset
   100
        binding := pool bindingOf: aSymbol.
569eec7576f1 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17780
diff changeset
   101
        binding notNil ifTrue:[^binding].
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
   102
    ].
68e006f46d87 initial checkin
ca
parents:
diff changeset
   103
68e006f46d87 initial checkin
ca
parents:
diff changeset
   104
    "subclassing and environment are not preserved"
68e006f46d87 initial checkin
ca
parents:
diff changeset
   105
    ^nil
17795
569eec7576f1 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17780
diff changeset
   106
569eec7576f1 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17780
diff changeset
   107
    "Modified: / 08-08-2010 / 14:46:09 / cg"
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
   108
!
68e006f46d87 initial checkin
ca
parents:
diff changeset
   109
68e006f46d87 initial checkin
ca
parents:
diff changeset
   110
bindingsDo: aBlock
68e006f46d87 initial checkin
ca
parents:
diff changeset
   111
self halt:'unfinished implementation'.
68e006f46d87 initial checkin
ca
parents:
diff changeset
   112
    ^ self classPool bindingsDo: aBlock
68e006f46d87 initial checkin
ca
parents:
diff changeset
   113
!
68e006f46d87 initial checkin
ca
parents:
diff changeset
   114
68e006f46d87 initial checkin
ca
parents:
diff changeset
   115
classBindingOf: varName
68e006f46d87 initial checkin
ca
parents:
diff changeset
   116
    "For initialization messages grant the regular scope"
68e006f46d87 initial checkin
ca
parents:
diff changeset
   117
11305
83f14d00b6a7 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 10853
diff changeset
   118
    self shouldImplement.       "not yet finished"
83f14d00b6a7 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 10853
diff changeset
   119
    ^ super bindingOf: varName
8551
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   120
!
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   121
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   122
includesKey:aSymbol
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   123
    ^ self keys includes:aSymbol
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   124
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   125
    "
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   126
     OpenGLConstants includesKey:#GL3Bytes
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   127
    "
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   128
!
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   129
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   130
keys
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   131
    ^ self classVarNames
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   132
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   133
    "
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   134
     OpenGLConstants keys
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   135
    "
10853
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
   136
!
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
   137
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
   138
keysDo:aBlock
72acafda369f dictionary compatible protocol added
Claus Gittinger <cg@exept.de>
parents: 9091
diff changeset
   139
    ^ self keys do:aBlock
8551
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   140
! !
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   141
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   142
!SharedPool class methodsFor:'printing & storing'!
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   143
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   144
displayString
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   145
    "return a printed represenation - here, a reminder is appended,
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   146
     that this is not a regular class"
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   147
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   148
    self == SharedPool ifTrue:[
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   149
        ^ super displayString
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   150
    ].
de314b9f8fa3 sharedPools
ca
parents: 8538
diff changeset
   151
    ^ self name , ' (* SharedPool *)'
8538
68e006f46d87 initial checkin
ca
parents:
diff changeset
   152
! !
68e006f46d87 initial checkin
ca
parents:
diff changeset
   153
68e006f46d87 initial checkin
ca
parents:
diff changeset
   154
!SharedPool class methodsFor:'queries'!
68e006f46d87 initial checkin
ca
parents:
diff changeset
   155
68e006f46d87 initial checkin
ca
parents:
diff changeset
   156
isSharedPool
68e006f46d87 initial checkin
ca
parents:
diff changeset
   157
    ^ self ~~ SharedPool
68e006f46d87 initial checkin
ca
parents:
diff changeset
   158
! !
68e006f46d87 initial checkin
ca
parents:
diff changeset
   159
68e006f46d87 initial checkin
ca
parents:
diff changeset
   160
!SharedPool class methodsFor:'documentation'!
68e006f46d87 initial checkin
ca
parents:
diff changeset
   161
68e006f46d87 initial checkin
ca
parents:
diff changeset
   162
version
17814
b75a7f0c346b Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17807
diff changeset
   163
    ^ '$Id: SharedPool.st 10602 2010-12-20 07:13:27Z vranyj1 $'
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   164
!
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   165
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   166
version_CVS
17814
b75a7f0c346b Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17807
diff changeset
   167
    ^ 'Header: /cvs/stx/stx/libbasic/SharedPool.st,v 1.10 2010/10/14 10:05:04 cg Exp '
17761
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
   168
!
17732
a1892eeca6c0 trunk merged into jv branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   169
17761
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
   170
version_SVN
17814
b75a7f0c346b Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17807
diff changeset
   171
    ^ '$Id: SharedPool.st 10602 2010-12-20 07:13:27Z vranyj1 $'
17761
b0e5971141bc Added Lookup and BuiltinLookup classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17735
diff changeset
   172
! !
17767
a4a32df3aa5e merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17761
diff changeset
   173
17772
6e0b3c06c364 Method reverted to r10532
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17767
diff changeset
   174
17780
b6e42c92eba0 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17772
diff changeset
   175
17795
569eec7576f1 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17780
diff changeset
   176
17807
06cc6c49e291 merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17795
diff changeset
   177
17814
b75a7f0c346b Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17807
diff changeset
   178