Thanks Henry for the correction. Should I prepare an OSProcess version with all the changes necessary for Pharo3 ?

Thierry

Le 04/09/2013 04:51, David T. Lewis a écrit :
On Tue, Sep 03, 2013 at 01:48:46PM +0200, Goubier Thierry wrote:

Le 03/09/2013 13:36, David T. Lewis a ?crit :

Can you post the method here first? I'd like to check it on some Squeak
images
before it goes into the repository.

Here it is (at least an example):

in OSProcess class

isPharo3AndLater
        "Test if we are on Pharo 3.0"

        ^ (Smalltalk classNamed: 'SystemVersion')
                ifNil: [ false ]
                ifNotNil: [ :v | v current type = 'Pharo' and: [ v current
                major >= 3 ] ]

The idea is right, but the details can be a PITA ;-)

- In Squeak trunk, class SystemVersion exists. But it does not understand 
#type, so this fails at runtime.

- There are no implementors of #major in Squeak (but this can be rewritten 
using #perform:).

- In Squeak 3.8, #ifNil:ifNotNil: requires a block with no arguments.

I did not check the other Pharo versions.

Something like this might work:

isPharo3AndLater
        Smalltalk
                at: #SystemVersion
                ifPresent: [:cls | ((cls canUnderstand: #type) and: [ cls 
canUnderstand: #major ])
                        ifTrue: [^ cls current type = 'Pharo' and: [ cls current 
major >= 3 ]]].
        ^false


Dave





platformName
        "After Squeak version 3.6, #platformName was moved to SmalltalkImage
        Some
        versions of Pharo move this to OSPlatform and issue deprecation
        warnings
        about the other usages. Then Pharo moved away from OSPlatform and
deprecated
        its use."

        "self platformName"

        self isPharo3AndLater
                ifTrue: [ ^ Smalltalk os name ].
        ^ (((Smalltalk hasClassNamed: #OSPlatform)
                        and: [(Smalltalk at: #OSPlatform)
                                        respondsTo: #platformName])
                ifTrue: [Smalltalk at: #OSPlatform]
                ifFalse: [((Smalltalk classNamed: 'SmalltalkImage')
                                ifNil: [^ Smalltalk osVersion]) current])
                                platformName

Thanks!
Dave


Dave





--
Thierry Goubier
CEA list
Laboratoire des Fondations des Syst?mes Temps R?el Embarqu?s
91191 Gif sur Yvette Cedex
France
Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95




--
Thierry Goubier
CEA list
Laboratoire des Fondations des Syst?mes Temps R?el Embarqu?s
91191 Gif sur Yvette Cedex
France
Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95



--
Thierry Goubier
CEA list
Laboratoire des Fondations des Systèmes Temps Réel Embarqués
91191 Gif sur Yvette Cedex
France
Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95

Reply via email to