[squeak-dev] Upgrading serialized Morphs to new Paragraph stuff

Edgar De Cleene edgardec2005 at gmail.com
Thu Oct 3 10:33:46 UTC 2013




On 10/3/13 6:55 AM, "Bob Arning" <arning315 at comcast.net> wrote:

>    One questions is: how were they serialized?
>  
>  Cheers,
>  Bob
>  

Here you have how to exchange serialized objects between Squeak, Pharo and
Cuis.

For Pharo 2.0 you need fileIn ReferenceStream logic first.
Drag any .obj into World and you got a Inspector of on it.

!Object methodsFor: 'objects from disk' stamp: 'edc 9/6/2008 19:40'!
fileOutCompressed

| unzipped zipped buffer aFileName |
aFileName := self class name asFileName.    "do better?"
    aFileName := UIManager default
                request: 'File name?' translated initialAnswer: aFileName.
    aFileName size == 0 ifTrue: [^ Beeper beep].
Cursor write
showWhile: [unzipped := RWBinaryOrTextStream on: ''.
unzipped fileOutClass: nil andObject: self.
unzipped reset.
zipped := FileDirectory default newFileNamed: aFileName , 'obz'.
zipped binary.
zipped := GZipWriteStream on: zipped.
buffer := ByteArray new: 50000.
'Compressing ' , self name
displayProgressAt: Sensor cursorPoint
from: 0
to: unzipped size
during: [:bar | 
[unzipped atEnd]
whileFalse: [bar value: unzipped position.
zipped
nextPutAll: (unzipped nextInto: buffer)].
zipped close.
unzipped close]]! !

!Object methodsFor: 'objects from disk' stamp: 'edc 6/20/2011 11:41'!
saveOnFileNamed: aString
    "Ask the user for a filename and save myself on a
    ReferenceStream file. Writes out the version and class structure.
    The file is fileIn-able. UniClasses will be filed out.
    This save objects as .obj"
    | aFileName fileStream |
    aString isEmpty
        ifTrue: [^ self error: 'name is missing'].
    aFileName := aString , '.obj'.
    fileStream := ReferenceStream fileNamed: aFileName .
    fileStream nextPut: self.
    fileStream close.
    ! !


!Object class methodsFor: 'objects from disk' stamp: 'edc 6/20/2011 12:16'!
readAndInspect: inputStream
| o rr |
    rr _ ReferenceStream on: inputStream.
    o _ rr next.
    rr close.
    o inspect! !

!Object class methodsFor: '*services-extras' stamp: 'edc 2/14/2008 08:24'!
fileReaderServicesForFile: fullName suffix: suffix
    | services |
    services _ OrderedCollection new.
    
    (fullName asLowercase endsWith: '.obj')
        ifTrue: [ services add: self serviceLoadObject ].
    ^services! !

!Object class methodsFor: '*services-extras' stamp: 'edc 7/27/2008 08:11'!
readCompressedObject: aFileStream
    
    self readAndInspect: (MultiByteBinaryOrTextStream with: (GZipReadStream
on: aFileStream) upToEnd) reset! !

!Object class methodsFor: '*services-extras' stamp: 'edc 7/27/2008 07:40'!
serviceCompressedObject
    "Answer a service for opening a saved Object"
    ^ (SimpleServiceEntry
        provider: Object
        label: 'gz saved Object'
        selector: #readCompressedObject:
        description: 'open a gz Object'
        buttonLabel: 'object')
        argumentGetter: [:fileList |
            
            fileList readOnlyStream]! !

!Object class methodsFor: '*services-extras' stamp: 'edc 2/14/2008 08:26'!
serviceLoadObject
"Answer a service for opening a saved Object"

    ^ (SimpleServiceEntry
        provider: self
        label: 'saved Object'
        selector: #readAndInspect:
        description: 'open a Object'
        buttonLabel: 'object')
        argumentGetter: [:fileList | fileList readOnlyStream]! !




More information about the Squeak-dev mailing list