'From VisualWorks® NonCommercial, Release 5i.4 of August 9, 2001 on June 6, 2002 at 6:20:43 pm'! !CormasNS.Kernel.CormasModel methodsFor: 'data'! data ^data isNil ifTrue: [Dictionary new] ifFalse: [data]! data: x data := x! dataSize ((self data includesKey: self class name) and: [(self data at: self class name) isEmpty not]) ifTrue: [^(self data at: self class name) values first size]. self data isEmpty ifFalse: [^self data values first values size]. ^0! initData self updateData: 0! initDataStructures self resetDataStructures. self setDataStructures! initFile: aString dataCollection: aCollec separator: aChar "aCollec is made of numbers" | aFilename | aFilename := (Cormas dataPath: self class name) construct: aString. aFilename exists ifTrue: [aFilename delete]. self updateFile: aString dataCollection: aCollec separator: aChar! initFullPathFile: aFilename dataCollection: aCollec separator: aChar "aCollec is made of numbers" aFilename exists ifTrue: [aFilename delete]. self updateFullPathFile: aFilename dataCollection: aCollec separator: aChar! resetDataStructures data := Dictionary new! setDataStructures self class activeProbes isEmpty ifFalse: [self data at: self class name put: Dictionary new. self class activeProbes do: [:p | (self data at: self class name) at: p put: List new]]. self class allClasses do: [:c | c activeProbes isEmpty ifFalse: [self data at: c name put: Dictionary new. c activeProbes do: [:p | (self data at: c name) at: p put: Dictionary new]]]! updateData: t self updateGlobalData; updateLocalData: t! updateFile: aString dataCollection: aCollec separator: aChar "aCollec is made of numbers" | stream | stream := ((Cormas dataPath: self class name) construct: aString) appendStream. 1 to: aCollec size - 1 do: [:i | stream nextPutAll: (aCollec at: i) printString , aChar asSymbol asString]. stream nextPutAll: aCollec last printString. stream nextPutAll: '\' withCRs. stream close! updateFullPathFile: aFilename dataCollection: aCollec separator: aChar "aCollec is made of numbers" | stream | stream := aFilename appendStream. 1 to: aCollec size - 1 do: [:i | stream nextPutAll: (aCollec at: i) printString , aChar asSymbol asString]. stream nextPutAll: aCollec last printString. stream nextPutAll: '\' withCRs. stream close! updateGlobalData (self data includesKey: self class name) ifTrue: [(self data at: self class name) keysAndValuesDo: [:name :list | list add: (self perform: name)]]! updateLocalData: t | res collec className | self class allClasses do: [:cl | className := cl name. (self data includesKey: className) ifTrue: [(self data at: className) keysAndValuesDo: [:name :dict | res := OrderedCollection new. (self perform: ('the' , className asString , 's') asSymbol) do: [:c | res add: (Array with: (c perform: name) with: c id)]. res do: [:x | (dict keys includes: x last) ifFalse: [collec := OrderedCollection new. t timesRepeat: [collec add: 0]. collec add: x first. dict at: x last put: collec] ifTrue: [collec := dict at: x last. collec add: x first. dict at: x last put: collec]]]]]! !