So lukas
- did you check what we did?
- will you include in rb packages?
I need to know.
Stef
On Mar 19, 2011, at 7:55 AM, Stéphane Ducasse wrote:
> Let us be more productive :)
>
> A BrowserEnvironment
> has an environment input= a systemDictionary (may be we should call it
> origin)
> a selectedEnviroment = a composite based on the BrowserEnvironment
> hierarchy
>
> The precondition is that it does not make sense to mix apple and orange so
> selectedEnvironment inside a composite to be meaningfull should sahre the
> same origin.
>
> Now it does not mean that we cannot have different composite over the same
> origin (ie we have
> multiple queries over Smalltalk globals) or that we cannot have different and
> separate composite
> working on different origin (ie I have a selection on Pharo1.2 and one on
> Pharo1.3 or a remote one).
>
>
> On Mar 18, 2011, at 10:09 PM, Lukas Renggli wrote:
>
>> - BrowserEnvironment>>#copyEmpty
>
> copyEmpty
> ^ self class new on: SystemDictionary new; yourself.
>
>> - BrowserEnvironment>>#&
>
> & anEnvironment
> "If we or anEnvironment includes everything, then just include the
> other environment (optimization)"
>
> self isSystem ifTrue: [^anEnvironment].
> anEnvironment isSystem ifTrue: [^self].
> ^AndEnvironment onEnvironment: self and: anEnvironment
>
> does not change
>
>
>> - BrowserEnvironment>>#I
>
> | anEnvironment
> "If we or anEnvironment includes everything, then return it instead of
> creating
> an or that will include everything."
>
> self isSystem ifTrue: [^self].
> anEnvironment isSystem ifTrue: [^anEnvironment].
> ^ OrEnvironment onEnvironment: self or: anEnvironment
>
>> - BrowserEnvironment>>#not
> not
> self isSystem ifTrue: [^SelectorEnvironment new].
> ^NotEnvironment onEnvironment: self
>
>
>
>> - BrowserEnvironment>>#isSystem
> isSystem
> ^true
>
> No problem (this could be renamed isOriginalInput but we keep it for
> compatibiity
>
>> - ClassEnvironment>>#classesDo:
>
> classesDo: aBlock
> classes do: [ :each |
> | class |
> class := Smalltalk globals at: each ifAbsent: [ nil ].
> (class notNil and: [ environment includesClass: class ])
> ifTrue: [ aBlock value: class ] ].
> metaClasses do: [ :each |
> | class |
> class := Smalltalk globals at: each ifAbsent: [ nil ].
> (class notNil and: [ environment includesClass: class class ])
> ifTrue: [ aBlock value: class class ] ]
> We already fixed it.
>
> classesDo: aBlock
> classes do: [ :each |
> | class |
> class := self environment at: each ifAbsent: [ nil ].
> (class notNil and: [ selectedEnvironment includesClass: class ])
> ifTrue: [ aBlock value: class ] ].
> metaClasses do: [ :each |
> | class |
> class := self environment at: each ifAbsent: [ nil ].
> (class notNil and: [ selectedEnvironment includesClass: class
> class ])
> ifTrue: [ aBlock value: class class ] ]
>
>> - SelectorEnvironment>>#classesDo:
>
> classesDo: aBlock
> classSelectors keysDo: [ :each |
> | class |
> class := Smalltalk globals at: each ifAbsent: [ nil ].
> (class notNil and: [ environment includesClass: class ])
> ifTrue: [ aBlock value: class ] ].
> metaClassSelectors keysDo: [ :each |
> | class |
> class := Smalltalk globals at: each ifAbsent: [ nil ].
> (class notNil and: [ environment includesClass: class class ])
> ifTrue: [ aBlock value: class class ] ]
>
> again we already fixed it.
>
> classesDo: aBlock
> classes do: [ :each |
> | class |
> class := self environment at: each ifAbsent: [ nil ].
> (class notNil and: [ selectedEnvironment includesClass: class ])
> ifTrue: [ aBlock value: class ] ].
> metaClasses do: [ :each |
> | class |
> class := self environment at: each ifAbsent: [ nil ].
> (class notNil and: [ selectedEnvironment includesClass: class
> class ])
> ifTrue: [ aBlock value: class class ] ]
>
>
> So does it make sense?
> I think so.
> We just have a common input for a given composite.
>
> Stef