[squeak-dev] The Trunk: Collections-fbs.553.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Dec 30 21:01:03 UTC 2013


2013/12/30 Chris Muller <asqueaker at gmail.com>

> One thing we've been saying is that a small-kernel of a Smalltalk
> system should be able to expand itself.  So, I'm just wondering
> whether file-in should not be part of Kernel or whether System is
> destined to be part of that small-kernel Smalltalk system..?
>
> But fileIn requires a Compiler, and a Compiler does not have to be in a
small kernel right?


>
> On Sat, Dec 28, 2013 at 4:22 PM,  <commits at source.squeak.org> wrote:
> > Frank Shearar uploaded a new version of Collections to project The Trunk:
> > http://source.squeak.org/trunk/Collections-fbs.553.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Collections-fbs.553
> > Author: fbs
> > Time: 28 December 2013, 10:22:03.872 pm
> > UUID: 30896006-fd4c-fc47-803c-572d1c1779ad
> > Ancestors: Collections-nice.552
> >
> > Move all of Collections' file in/out logic to System, where the other
> file in/out logic lives (in System-Object Storage and friends).
> >
> > =============== Diff against Collections-nice.552 ===============
> >
> > Item was removed:
> > - ----- Method: Array>>objectForDataStream: (in category 'file in/out')
> -----
> > - objectForDataStream: refStrm
> > -       | dp |
> > -       "I am about to be written on an object file.  If I am one of two
> shared global arrays, write a proxy instead."
> > -
> > - self == (TextConstants at: #DefaultTabsArray) ifTrue: [
> > -       dp := DiskProxy global: #TextConstants selector: #at: args:
> #(DefaultTabsArray).
> > -       refStrm replace: self with: dp.
> > -       ^ dp].
> > - self == (TextConstants at: #DefaultMarginTabsArray) ifTrue: [
> > -       dp := DiskProxy global: #TextConstants selector: #at: args:
> #(DefaultMarginTabsArray).
> > -       refStrm replace: self with: dp.
> > -       ^ dp].
> > - ^ super objectForDataStream: refStrm!
> >
> > Item was removed:
> > - ----- Method: Association>>objectForDataStream: (in category 'objects
> from disk') -----
> > - objectForDataStream: refStrm
> > -       | dp |
> > -       "I am about to be written on an object file.  If I am a known
> global, write a proxy that will hook up with the same resource in the
> destination system."
> > -
> > -       ^ (Smalltalk globals associationAt: key ifAbsent: [nil]) == self
> > -               ifTrue: [dp := DiskProxy global: #Smalltalk selector:
> #associationOrUndeclaredAt:
> > -                                                       args: (Array
> with: key).
> > -                       refStrm replace: self with: dp.
> > -                       dp]
> > -               ifFalse: [self]!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>backChunk (in category 'fileIn/Out')
> -----
> > - backChunk
> > -       "Answer the contents of the receiver back to the previous
> terminator character.  Doubled terminators indicate an embedded terminator
> character."
> > -
> > -       | output character |
> > -       output := WriteStream on: (String new: 1000).
> > -       self back. "oldBack compatibility"
> > -       [ (character := self back) == nil ] whileFalse: [
> > -               character == $!! ifTrue: [
> > -                       self back == $!! ifFalse: [
> > -                               self skip: 2. "oldBack compatibility"
> > -                               ^output contents reversed ] ].
> > -               output nextPut: character].
> > -       self skip: 1. "oldBack compatibility"
> > -       ^output contents reversed!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>basicNextChunk (in category
> 'fileIn/Out') -----
> > - basicNextChunk
> > -       "Answer the contents of the receiver, up to the next terminator
> character. Doubled terminators indicate an embedded terminator character."
> > -       | terminator out ch |
> > -       terminator := $!!.
> > -       out := WriteStream on: (String new: 1000).
> > -       self skipSeparators.
> > -       [(ch := self next) == nil] whileFalse: [
> > -               (ch == terminator) ifTrue: [
> > -                       self peek == terminator ifTrue: [
> > -                               self next.  "skip doubled terminator"
> > -                       ] ifFalse: [
> > -                               ^ out contents  "terminator is not
> doubled; we're done!!"
> > -                       ].
> > -               ].
> > -               out nextPut: ch.
> > -       ].
> > -       ^ out contents!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>checkForPreamble: (in category
> 'fileIn/Out') -----
> > - checkForPreamble: chunk
> > -       ((chunk beginsWith: '"Change Set:') and: [ChangeSet current
> preambleString == nil])
> > -               ifTrue: [ChangeSet current preambleString: chunk].
> > -       ((chunk beginsWith: '"Postscript:') and: [ChangeSet current
> postscriptString == nil])
> > -               ifTrue: [ChangeSet current postscriptString: chunk].
> > -
> > - !
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>command: (in category 'fileIn/Out')
> -----
> > - command: aString
> > -       "Overridden by HtmlFileStream to append commands directly
> without translation.  4/5/96 tk"
> > -       "We ignore any HTML commands.  Do nothing"!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>copyMethodChunkFrom: (in category
> 'fileIn/Out') -----
> > - copyMethodChunkFrom: aStream
> > -       "Copy the next chunk from aStream (must be different from the
> receiver)."
> > -       | chunk |
> > -       chunk := aStream nextChunkText.
> > -       chunk runs values size = 1 "Optimize for unembellished text"
> > -               ifTrue: [self nextChunkPut: chunk asString]
> > -               ifFalse: [self nextChunkPutWithStyle: chunk]!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>copyMethodChunkFrom:at: (in category
> 'fileIn/Out') -----
> > - copyMethodChunkFrom: aStream at: pos
> > -       "Copy the next chunk from aStream (must be different from the
> receiver)."
> > -       | chunk |
> > -       aStream position: pos.
> > -       chunk := aStream nextChunkText.
> > -       chunk runs values size = 1 "Optimize for unembellished text"
> > -               ifTrue: [self nextChunkPut: chunk asString]
> > -               ifFalse: [self nextChunkPutWithStyle: chunk]!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>copyPreamble:from:at: (in category
> 'filein/out') -----
> > - copyPreamble: preamble from: aStream at: pos
> > -       "Look for a changeStamp for this method by peeking backward.
> > -       Write a method preamble, with that stamp if found."
> > -       | terminator last50 stamp i |
> > -       terminator := $!!.
> > -
> > -       "Look back to find stamp in old preamble, such as...
> > -       Polygon methodsFor: 'private' stamp: 'di 6/25/97 21:42' prior:
> 34957598!! "
> > -       aStream position: pos.
> > -       aStream backChunk.      "to beginning of method"
> > -       last50 := aStream backChunk.    "to get preamble"
> > -       aStream position: pos.
> > -       stamp := String new.
> > -       (i := last50
> > -               findLastOccurrenceOfString: 'stamp:'
> > -               startingAt: 1) > 0 ifTrue:
> > -               [ stamp := (last50
> > -                       copyFrom: i + 8
> > -                       to: last50 size) copyUpTo: $' ].
> > -
> > -       "Write the new preamble, with old stamp if any."
> > -       self
> > -               cr;
> > -               nextPut: terminator.
> > -       self nextChunkPut: (String streamContents:
> > -                       [ :strm |
> > -                       strm nextPutAll: preamble.
> > -                       stamp size > 0 ifTrue:
> > -                               [ strm
> > -                                       nextPutAll: ' stamp: ';
> > -                                       print: stamp ] ]).
> > -       self cr!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>decodeString:andRuns: (in category
> 'fileIn/Out') -----
> > - decodeString: string andRuns: runsRaw
> > -
> > -       | strm runLength runValues newString index |
> > -       strm := runsRaw readStream.
> > -       (strm peekFor: $( ) ifFalse: [^ nil].
> > -       runLength := OrderedCollection new.
> > -       [strm skipSeparators.
> > -        strm peekFor: $)] whileFalse:
> > -               [runLength add: (Number readFrom: strm)].
> > -
> > -       runValues := OrderedCollection new.
> > -       [strm atEnd not] whileTrue:
> > -               [runValues add: (Number readFrom: strm).
> > -               strm next.].
> > -
> > -       newString := WideString new: string size.
> > -       index := 1.
> > -       runLength with: runValues do: [:length :leadingChar |
> > -               index to: index + length - 1 do: [:pos |
> > -                       newString at: pos put: (Character leadingChar:
> leadingChar code: (string at: pos) charCode).
> > -               ].
> > -               index := index + length.
> > -       ].
> > -
> > -       ^ newString.
> > - !
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>decodeStyle:version: (in category
> 'fileIn/Out') -----
> > - decodeStyle: runsObjData version: styleVersion
> > -       "Decode the runs array from the ReferenceStream it is stored in."
> > -       "Verify that the class mentioned have the same inst vars as we
> have now"
> > -
> > -       | structureInfo |
> > -       styleVersion = RemoteString currentTextAttVersion ifTrue: [
> > -               "Matches our classes, no need for checking"
> > -               ^ (ReferenceStream on: runsObjData) next].
> > -       structureInfo := RemoteString structureAt: styleVersion.
>  "or nil"
> > -               "See SmartRefStream instVarInfo: for dfn"
> > -       ^ SmartRefStream read: runsObjData withClasses: structureInfo!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>fileIn (in category 'fileIn/Out')
> -----
> > - fileIn
> > -       "This is special for reading expressions from text that has been
> formatted
> > -       with exclamation delimitors. The expressions are read and passed
> to the
> > -       Compiler. Answer the result of compilation."
> > -
> > -       ^ self fileInAnnouncing: 'Reading ' , self name!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>fileInAnnouncing: (in category
> 'fileIn/Out') -----
> > - fileInAnnouncing: announcement
> > -       "This is special for reading expressions from text that has been
> formatted
> > -       with exclamation delimitors. The expressions are read and passed
> to the
> > -       Compiler. Answer the result of compilation.  Put up a progress
> report with
> > -      the given announcement as the title."
> > -
> > -       | val |
> > -       announcement
> > -               displayProgressFrom: 0
> > -               to: self size
> > -               during:
> > -                       [:bar |
> > -                       [self atEnd] whileFalse:
> > -                                       [bar value: self position.
> > -                                       self skipSeparators.
> > -
> > -                                       [ | chunk |
> > -                                       val := (self peekFor: $!!)
> > -                                                               ifTrue:
> [(Compiler evaluate: self nextChunk logged: false) scanFrom: self]
> > -                                                               ifFalse:
> > -
> [chunk := self nextChunk.
> > -
> self checkForPreamble: chunk.
> > -
> Compiler evaluate: chunk logged: true]]
> > -                                                       on:
> InMidstOfFileinNotification
> > -                                                       do: [:ex | ex
> resume: true].
> > -                                       self skipStyleChunk].
> > -                       self close].
> > -       "Note:  The main purpose of this banner is to flush the changes
> file."
> > -       Smalltalk logChange: '----End fileIn of ' , self name , '----'.
> > -       self flag: #ThisMethodShouldNotBeThere. "sd"
> > -       ^val!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>fileInFor:announcing: (in category
> 'fileIn/Out') -----
> > - fileInFor: client announcing: announcement
> > -       "This is special for reading expressions from text that has been
> formatted
> > -       with exclamation delimitors. The expressions are read and passed
> to the
> > -       Compiler. Answer the result of compilation.  Put up a progress
> report with
> > -      the given announcement as the title.
> > -       Does NOT handle preambles or postscripts specially."
> > -       | val |
> > -       announcement
> > -               displayProgressFrom: 0
> > -               to: self size
> > -               during:
> > -               [:bar |
> > -               [self atEnd]
> > -                       whileFalse:
> > -                               [bar value: self position.
> > -                               self skipSeparators.
> > -                               [ | chunk |
> > -                               val := (self peekFor: $!!) ifTrue: [
> > -                                               (Compiler evaluate: self
> nextChunk for: client logged: false) scanFrom: self
> > -                                       ] ifFalse: [
> > -                                               chunk := self nextChunk.
> > -                                               self checkForPreamble:
> chunk.
> > -                                               Compiler evaluate: chunk
> for: client logged: true ].
> > -                               ] on: InMidstOfFileinNotification
> > -                                 do: [ :ex | ex resume: true].
> > -                               self atEnd ifFalse: [ self
> skipStyleChunk ]].
> > -               self close].
> > -       "Note:  The main purpose of this banner is to flush the changes
> file."
> > -       Smalltalk logChange: '----End fileIn of ' , self name , '----'.
> > -       ^ val!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>fileInSilentlyAnnouncing: (in
> category 'fileIn/Out') -----
> > - fileInSilentlyAnnouncing: announcement
> > -       "This is special for reading expressions from text that has been
> formatted
> > -       with exclamation delimitors. The expressions are read and passed
> to the
> > -       Compiler. Answer the result of compilation.  Put up a progress
> report with
> > -      the given announcement as the title."
> > -
> > -       | val chunk |
> > -       [self atEnd] whileFalse:
> > -                       [self skipSeparators.
> > -
> > -                       [val := (self peekFor: $!!)
> > -                                               ifTrue: [(Compiler
> evaluate: self nextChunk logged: false) scanFrom: self]
> > -                                               ifFalse:
> > -                                                       [chunk := self
> nextChunk.
> > -                                                       self
> checkForPreamble: chunk.
> > -                                                       Compiler
> evaluate: chunk logged: true]]
> > -                                       on: InMidstOfFileinNotification
> > -                                       do: [:ex | ex resume: true].
> > -                       self skipStyleChunk].
> > -       self close.
> > -       "Note:  The main purpose of this banner is to flush the changes
> file."
> > -       Smalltalk  logChange: '----End fileIn of ' , self name , '----'.
> > -       self flag: #ThisMethodShouldNotBeThere. "sd"
> > -       SystemNavigation new allBehaviorsDo:
> > -                       [:cl |
> > -                       cl
> > -                               removeSelectorSimply: #DoIt;
> > -                               removeSelectorSimply: #DoItIn:].
> > -       ^val!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>header (in category 'fileIn/Out')
> -----
> > - header
> > -       "If the stream requires a standard header, override this
> message.  See HtmlFileStream"!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>nextChunk (in category 'fileIn/Out')
> -----
> > - nextChunk
> > -       "Answer the contents of the receiver, up to the next terminator
> character. Doubled terminators indicate an embedded terminator character."
> > -       | terminator out ch |
> > -       terminator := $!!.
> > -       out := WriteStream on: (String new: 1000).
> > -       self skipSeparators.
> > -       [(ch := self next) == nil] whileFalse: [
> > -               (ch == terminator) ifTrue: [
> > -                       self peek == terminator ifTrue: [
> > -                               self next.  "skip doubled terminator"
> > -                       ] ifFalse: [
> > -                               ^ self parseLangTagFor: out contents
>  "terminator is not doubled; we're done!!"
> > -                       ].
> > -               ].
> > -               out nextPut: ch.
> > -       ].
> > -       ^ self parseLangTagFor: out contents.
> > - !
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>nextChunkText (in category
> 'fileIn/Out') -----
> > - nextChunkText
> > -       "Deliver the next chunk as a Text.  Decode the following ]style[
> chunk if present.  Position at start of next real chunk."
> > -       | string runs peek pos |
> > -       "Read the plain text"
> > -       string := self nextChunk.
> > -
> > -       "Test for ]style[ tag"
> > -       pos := self position.
> > -       peek := self skipSeparatorsAndPeekNext.
> > -       peek = $] ifFalse: [self position: pos. ^ string asText].  "no
> tag"
> > -       (self upTo: $[) = ']style' ifFalse: [self position: pos. ^
> string asText].  "different tag"
> > -
> > -       "Read and decode the style chunk"
> > -       runs := RunArray scanFrom: self basicNextChunk readStream.
> > -
> > -       ^ Text basicNew setString: string setRunsChecking: runs.
> > - !
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>parseLangTagFor: (in category
> 'fileIn/Out') -----
> > - parseLangTagFor: aString
> > -
> > -       | string peek runsRaw pos |
> > -       string := aString.
> > -       "Test for ]lang[ tag"
> > -       pos := self position.
> > -       peek := self skipSeparatorsAndPeekNext.
> > -       peek = $] ifFalse: [self position: pos. ^ string].  "no tag"
> > -       (self upTo: $[) = ']lang' ifTrue: [
> > -               runsRaw := self basicNextChunk.
> > -               string := self decodeString: aString andRuns: runsRaw
> > -       ] ifFalse: [
> > -               self position: pos
> > -       ].
> > -       ^ string.
> > - !
> >
> > Item was changed:
> > + ----- Method: PositionableStream>>skipSeparators (in category
> 'positioning') -----
> > - ----- Method: PositionableStream>>skipSeparators (in category
> 'fileIn/Out') -----
> >   skipSeparators
> >         [self atEnd]
> >                 whileFalse:
> >                 [self next isSeparator ifFalse: [^ self position: self
> position-1]]!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>skipSeparatorsAndPeekNext (in
> category 'fileIn/Out') -----
> > - skipSeparatorsAndPeekNext
> > -       "A special function to make nextChunk fast"
> > -       | peek |
> > -       [self atEnd]
> > -               whileFalse:
> > -               [(peek := self next) isSeparator
> > -                       ifFalse: [self position: self position-1. ^
> peek]]!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>skipStyleChunk (in category
> 'fileIn/Out') -----
> > - skipStyleChunk
> > -       "Get to the start of the next chunk that is not a style for the
> previous chunk"
> > -
> > -       | pos |
> > -       pos := self position.
> > -       self skipSeparators.
> > -       self peek == $]
> > -               ifTrue: [(self upTo: $[) = ']text'      "old -- no
> longer needed"
> > -                               "now positioned past the open bracket"
> > -                       ifFalse: [self nextChunk]]      "absorb ]style[
> and its whole chunk"
> > -
> > -               ifFalse: [self position: pos]   "leave untouched"
> > - !
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>trailer (in category 'fileIn/Out')
> -----
> > - trailer
> > -       "If the stream requires a standard trailer, override this
> message.  See HtmlFileStream"!
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>unCommand (in category 'fileIn/Out')
> -----
> > - unCommand
> > -       "If this read stream is at a <, then skip up to just after the
> next >.  For removing html commands."
> > -       | char |
> > -       [self peek = $<] whileTrue: ["begin a block"
> > -               [self atEnd == false and: [self next ~= $>]] whileTrue.
> > -               "absorb characters"
> > -               ].
> > -  !
> >
> > Item was removed:
> > - ----- Method: PositionableStream>>verbatim: (in category 'fileIn/Out')
> -----
> > - verbatim: aString
> > -       "Do not attempt to translate the characters.  Use to override
> nextPutAll:"
> > -       ^ self nextPutAll: aString!
> >
> > Item was removed:
> > - ----- Method: ReadWriteStream>>fileInObjectAndCode (in category
> 'fileIn/Out') -----
> > - fileInObjectAndCode
> > -       "This file may contain:
> > - 1) a fileIn of code
> > - 2) just an object in SmartReferenceStream format
> > - 3) both code and an object.
> > -       File it in and return the object.  Note that self must be a
> FileStream or RWBinaryOrTextStream.  Maybe ReadWriteStream incorporate
> RWBinaryOrTextStream?"
> > -       | refStream object |
> > -       self text.
> > -       self peek asciiValue = 4
> > -               ifTrue: [  "pure object file"
> > -                       refStream := SmartRefStream on: self.
> > -                       object := refStream nextAndClose]
> > -               ifFalse: [  "objects mixed with a fileIn"
> > -                       self fileIn.  "reads code and objects, then
> closes the file"
> > -                       object := SmartRefStream scannedObject].
>  "set by side effect of one of the chunks"
> > -       SmartRefStream scannedObject: nil.  "clear scannedObject"
> > -       ^ object!
> >
> > Item was removed:
> > - ----- Method: ReadWriteStream>>fileNameEndsWith: (in category
> 'fileIn/Out') -----
> > - fileNameEndsWith: aString
> > -       "See comment in FileStream fileNameEndsWith:"
> > -
> > -       ^false!
> >
> > Item was removed:
> > - ----- Method: ReadWriteStream>>fileOutChangeSet:andObject: (in
> category 'fileIn/Out') -----
> > - fileOutChangeSet: aChangeSetOrNil andObject: theObject
> > -       "Write a file that has both the source code for the named class
> and an object as bits.  Any instance-specific object will get its class
> written automatically."
> > -
> > -       "An experimental version to fileout a changeSet first so that a
> project can contain its own classes"
> > -
> > -
> > -       self setFileTypeToObject.
> > -               "Type and Creator not to be text, so can attach
> correctly to an email msg"
> > -       self header; timeStamp.
> > -
> > -       aChangeSetOrNil ifNotNil: [
> > -               aChangeSetOrNil fileOutPreambleOn: self.
> > -               aChangeSetOrNil fileOutOn: self.
> > -               aChangeSetOrNil fileOutPostscriptOn: self.
> > -       ].
> > -       self trailer.   "Does nothing for normal files.  HTML streams
> will have trouble with object data"
> > -
> > -       "Append the object's raw data"
> > -       (SmartRefStream on: self)
> > -               nextPut: theObject;  "and all subobjects"
> > -               close.          "also closes me"
> > - !
> >
> > Item was removed:
> > - ----- Method: ReadWriteStream>>fileOutChanges (in category
> 'fileIn/Out') -----
> > - fileOutChanges
> > -       "Append to the receiver a description of all class changes."
> > -       Cursor write showWhile:
> > -               [self header; timeStamp.
> > -               ChangeSet current fileOutOn: self.
> > -               self trailer; close]!
> >
> > Item was removed:
> > - ----- Method: ReadWriteStream>>fileOutClass:andObject: (in category
> 'fileIn/Out') -----
> > - fileOutClass: extraClass andObject: theObject
> > -       "Write a file that has both the source code for the named class
> and an object as bits.  Any instance-specific object will get its class
> written automatically."
> > -
> > -       | class srefStream |
> > -       self setFileTypeToObject.
> > -               "Type and Creator not to be text, so can attach
> correctly to an email msg"
> > -       self text.
> > -       self header; timeStamp.
> > -
> > -       extraClass ifNotNil: [
> > -               class := extraClass.    "A specific class the user wants
> written"
> > -               class sharedPools size > 0 ifTrue:
> > -                       [class shouldFileOutPools
> > -                               ifTrue: [class fileOutSharedPoolsOn:
> self]].
> > -               class fileOutOn: self moveSource: false toFile: 0].
> > -       self trailer.   "Does nothing for normal files.  HTML streams
> will have trouble with object data"
> > -       self binary.
> > -
> > -       "Append the object's raw data"
> > -       srefStream := SmartRefStream on: self.
> > -       srefStream nextPut: theObject.  "and all subobjects"
> > -       srefStream close.               "also closes me"
> > - !
> >
> > Item was removed:
> > - ----- Method: ReadWriteStream>>fileOutClass:andObject:blocking: (in
> category 'fileIn/Out') -----
> > - fileOutClass: extraClass andObject: theObject blocking: anIdentDict
> > -       "Write a file that has both the source code for the named class
> and an object as bits.  Any instance-specific object will get its class
> written automatically.  Accept a list of objects to map to nil or some
> other object (blockers).  In addition to teh choices in each class's
> objectToStoreOnDataStream"
> > -
> > -       | class srefStream |
> > -       self setFileTypeToObject.
> > -               "Type and Creator not to be text, so can attach
> correctly to an email msg"
> > -       self header; timeStamp.
> > -
> > -       extraClass ifNotNil: [
> > -               class := extraClass.    "A specific class the user wants
> written"
> > -               class sharedPools size > 0 ifTrue:
> > -                       [class shouldFileOutPools
> > -                               ifTrue: [class fileOutSharedPoolsOn:
> self]].
> > -               class fileOutOn: self moveSource: false toFile: 0].
> > -       self trailer.   "Does nothing for normal files.  HTML streams
> will have trouble with object data"
> > -
> > -       "Append the object's raw data"
> > -       srefStream := SmartRefStream on: self.
> > -       srefStream blockers: anIdentDict.
> > -       srefStream nextPut: theObject.  "and all subobjects"
> > -       srefStream close.               "also closes me"
> > - !
> >
> > Item was removed:
> > - ----- Method: SmartRefStream>>abstractStringx0 (in category
> '*Collections-Strings-conversion') -----
> > - abstractStringx0
> > -
> > -       ^ String!
> >
> > Item was removed:
> > - ----- Method: SmartRefStream>>multiStringx0 (in category
> '*Collections-Strings-conversion') -----
> > - multiStringx0
> > -
> > -       ^ WideString!
> >
> > Item was removed:
> > - ----- Method: SmartRefStream>>multiSymbolx0 (in category
> '*Collections-Strings-conversion') -----
> > - multiSymbolx0
> > -
> > -       ^ WideSymbol!
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20131230/dfa6668b/attachment-0001.htm


More information about the Squeak-dev mailing list