yes code violates any idea of encapsulation.
SourcesArray at: 2 :)

Stef

On Nov 15, 2013, at 10:46 AM, Martin Dias <tinchodias@gmail.com> wrote:

I was trying to figure out how to delegate somebody else the knowledge of the file number:

RemoteString newString: aString onFileNumber: 2 

I was thinking in a replacement like:

SourceFiles newRemoteStringWith: aString

or:

 SourceFiles oldRemoteStringAt: aSourcePointer

And let a SourceFileArray instance decide what's the file number.

But it's not so easy. In other methods (I think related to condensing the file or filing out), it's also specified the filestream:

RemoteString newString: self organization classComment onFileNumber: 2 toFile: aFileStream

Mart�n


On Thu, Nov 14, 2013 at 7:51 PM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
I hate this code.
I had to work with it so many times when I extracted all the squeak version to load them in VW to be analysed
in Moose (and sadly nobody did anything with them) I should have started to publish ideas on them - silly me.

Stef

On Nov 14, 2013, at 5:52 PM, Martin Dias <tinchodias@gmail.com> wrote:

Hi

Any idea why the "aString isKindOf: RemoteString" is there?

In TClassDescription:

classComment: aString stamp: aStamp
"Store the comment, aString or Text or RemoteString, associated with the class we are organizing.  Empty string gets stored only if had a non-empty one before."

| pointer header file oldCommentRemoteString oldComment oldStamp |
oldComment := self organization classComment.
oldStamp := self organization commentStamp.

(aString isKindOf: RemoteString) ifTrue: [
SystemAnnouncer uniqueInstance 
class: self 
oldComment: oldComment 
newComment: aString string 
oldStamp: oldStamp 
newStamp: aStamp.
^ self organization classComment: aString stamp: aStamp].

oldCommentRemoteString := self organization commentRemoteStr.
(aString size = 0) & (oldCommentRemoteString isNil) ifTrue: [^ self organization classComment: nil].
"never had a class comment, no need to write empty string out"

pointer := oldCommentRemoteString 
ifNil: [0] 
ifNotNil: [oldCommentRemoteString sourcePointer].
(file := SourceFiles at: 2) ifNotNil: [
file setToEnd; cr; nextPut: $!. "directly"
"Should be saying (file command: 'H3') for HTML, but ignoring it here"
header := String streamContents: [:strm | strm nextPutAll: self name;
nextPutAll: ' commentStamp: '.
aStamp storeOn: strm.
strm nextPutAll: ' prior: '; nextPutAll: pointer printString].
file nextChunkPut: header].
self organization 
classComment: (RemoteString newString: aString onFileNumber: 2) 
stamp: aStamp.
SystemAnnouncer uniqueInstance 
class: self 
oldComment: oldComment 
newComment: aString 
oldStamp: oldStamp 
newStamp: aStamp

(nice method eh!)

Mart�n