<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <font face="Georgia">That's one way. Another is 'save morph in file'
      from the metamenu. Question is which Chris used.<br>
      <br>
    </font>
    <div class="moz-cite-prefix">On 10/3/13 6:33 AM, Edgar De Cleene
      wrote:<br>
    </div>
    <blockquote cite="mid:CE72CE5A.115%25edgardec2005@gmail.com"
      type="cite">
      <pre wrap="">


On 10/3/13 6:55 AM, "Bob Arning" <a class="moz-txt-link-rfc2396E" href="mailto:arning315@comcast.net">&lt;arning315@comcast.net&gt;</a> wrote:

</pre>
      <blockquote type="cite">
        <pre wrap="">   One questions is: how were they serialized?
 
 Cheers,
 Bob
 
</pre>
      </blockquote>
      <pre wrap="">
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]! !




</pre>
    </blockquote>
    <br>
  </body>
</html>