<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><div id="bloop_customfont" style="margin: 0px;">Some of us are using .obj for long time for limited exchange of simple objects between Cuis,Squeak and Pharo</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">Object methodsFor: 'objects from disk' stamp: 'edc 6/20/2008 11:41'!</div><div id="bloop_customfont" style="margin: 0px;">saveOnFileNamed: aString&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>"Ask the user for a filename and save myself on a</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>SmartReferenceStream file. Writes out the version and class structure.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>The file is fileIn-able. UniClasses will be filed out.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>This save objects as .obj"</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>| aFileName fileStream |</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>aString isEmpty</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>ifTrue: [^ self error: 'name is missing'].</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>aFileName := aString , '.obj'.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>fileStream := ReferenceStream fileNamed: aFileName .</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>fileStream nextPut: self.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>fileStream close.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>! !</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">!Object class methodsFor: 'objects from disk' stamp: 'edc 3/5/2008 12:12'!</div><div id="bloop_customfont" style="margin: 0px;">readAndInspect: inputStream</div><div id="bloop_customfont" style="margin: 0px;">| o rr |</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>rr _ ReferenceStream on: inputStream.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>o _ rr next.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>rr close.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>o inspect! !</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">!Object class methodsFor: '*services-extras' stamp: 'edc 2/14/2008 08:24'!</div><div id="bloop_customfont" style="margin: 0px;">fileReaderServicesForFile: fullName suffix: suffix</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>| services |</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>services _ OrderedCollection new.</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span></div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>(fullName asLowercase endsWith: '.obj')</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>ifTrue: [ services add: self serviceLoadObject ].</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>^services! !</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">!Object class methodsFor: '*services-extras' stamp: 'edc 7/27/2008 08:11'!</div><div id="bloop_customfont" style="margin: 0px;">readCompressedObject: aFileStream&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span></div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>self readAndInspect: (MultiByteBinaryOrTextStream with: (GZipReadStream on: aFileStream) upToEnd) reset! !</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">!Object class methodsFor: '*services-extras' stamp: 'edc 7/27/2008 07:40'!</div><div id="bloop_customfont" style="margin: 0px;">serviceCompressedObject</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>"Answer a service for opening a saved Object"</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>^ (SimpleServiceEntry</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>provider: Object</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>label: 'gz saved Object'</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>selector: #readCompressedObject:</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>description: 'open a gz Object'</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>buttonLabel: 'object')</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>argumentGetter: [:fileList |&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                        </span></div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                        </span>fileList readOnlyStream]! !</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">!Object class methodsFor: '*services-extras' stamp: 'edc 2/14/2008 08:26'!</div><div id="bloop_customfont" style="margin: 0px;">serviceLoadObject</div><div id="bloop_customfont" style="margin: 0px;">"Answer a service for opening a saved Object"</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">        </span>^ (SimpleServiceEntry&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>provider: self&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>label: 'saved Object'</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>selector: #readAndInspect:</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>description: 'open a Object'</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>buttonLabel: 'object')</div><div id="bloop_customfont" style="margin: 0px;"><span class="Apple-tab-span" style="white-space:pre">                </span>argumentGetter: [:fileList | fileList readOnlyStream]! !</div><div id="bloop_customfont" style="margin: 0px;"><br></div></div> <br> <div id="bloop_sign_1462881055339563008" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">--&nbsp;<br>Edgar De Cleene<br>Sent with Airmail</div></div> <br><p class="airmail_on">On May 10, 2016 at 08:23:08, marcel.taeumel (<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>Hi, there!
<br>
<br>If you want to serialize an object with the SmartRefStream to support
<br>addition and removal instance variables in classes, you can do this:
<br>
<br>obj := Morph new.
<br>stream := SmartRefStream on: #[] writeStream.
<br>stream nextPutObjOnly: obj.
<br>stream close.
<br>blob := stream contents.
<br>objCopy := (SmartRefStream on: blob readStream) next.
<br>
<br>Or your can do this, which produces the traditional "file-in format" with a
<br>text header used, for example, when filing out a morph:
<br>
<br>obj := Morph new.
<br>stream := SmartRefStream on: (RWBinaryOrTextStream on: '').
<br>stream nextPut: obj.
<br>stream close.
<br>blob := stream contents.
<br>objCopy := (SmartRefStream on: blob readStream asBinaryOrTextStream)
<br>nextAndClose.
<br>
<br>This is awkward. It took me some time to figure out that I just cannot use
<br>the regular stream interface, which I can do with ReferenceStream. And
<br>SmartRefStream is just a subclass of it. *sigh*
<br>
<br>So, I want to use #nextPut: and #next: just as usual:
<br>
<br>obj := Morph new.
<br>stream := SmartRefStream on: #[] writeStream.
<br>stream nextPut: obj.
<br>stream close.
<br>blob := stream contents.
<br>objCopy := (SmartRefStream on: blob readStream) next.
<br>
<br>Also, WriteStream DNU #ascii. *sigh*
<br>
<br>Best,
<br>Marcel
<br>
<br>
<br>
<br>
<br>--
<br>View this message in context: http://forum.world.st/SmartRefStream-has-no-usable-Stream-interface-Why-tp4894185.html
<br>Sent from the Squeak - Dev mailing list archive at Nabble.com.
<br>
<br></div></div></span></blockquote></body></html>