# HG changeset patch # User Stefan Vogel # Date 1159211881 -7200 # Node ID 69b2dbff964b8138943060ebb7eed952601a16e5 # Parent 72c87816423e363405ca9966bfe6278128bfefc4 *** empty log message *** diff -r 72c87816423e -r 69b2dbff964b ProjectDefinition.st --- a/ProjectDefinition.st Mon Sep 25 21:17:00 2006 +0200 +++ b/ProjectDefinition.st Mon Sep 25 21:18:01 2006 +0200 @@ -590,19 +590,26 @@ !ProjectDefinition class methodsFor:'code generation'! classNamesAndAttributes_code_ignoreOldDefinition:ignoreOldDefinition + "generate method code returning all classes of the project. + Platform attributes are kept from the old definition. + If ignoreOldDefinition is true, the autoload attribute is set/reset if + the class is installed as autoloaded in the image. If false, it is taken + from an existing definition in #classNamesAndAttributes" + ^ String streamContents:[:s | + |oldSpec| + oldSpec := self classNamesAndAttributes. + s nextPutLine:'classNamesAndAttributes'. + s tab; nextPutLine:'" or ( attributes...) in load order"'; cr. s nextPutLine:' ^ #('. - s tab; nextPutLine:'"/ or ( attributes...)'. self searchForClasses do:[:eachClass | - |oldSpec attributes oldSpecEntry| - - oldSpec := self classNamesAndAttributes. + |attributes oldSpecEntry| (eachClass isLoaded not or:[eachClass isPrivate not]) ifTrue:[ oldSpecEntry := oldSpec detect:[:entry | entry first = eachClass name] ifNone:nil. ignoreOldDefinition ifTrue:[ - "/ take autoload attribute from current state + "take autoload attribute from classes state in the image" oldSpecEntry notNil ifTrue:[ attributes := oldSpecEntry copyFrom:2. attributes := attributes copyWithout:#autoload. @@ -610,26 +617,24 @@ attributes := #() ]. eachClass isLoaded ifFalse:[ - attributes isEmpty ifTrue:[ - attributes := attributes , #( autoload ). - ] + attributes := attributes copyWith:#autoload. ]. ] ifFalse:[ - "/ keep any existing attribute + "keep any existing attribute" oldSpecEntry notNil ifTrue:[ attributes := oldSpecEntry copyFrom:2. ] ifFalse:[ - attributes := eachClass isLoaded ifTrue:[ #() ] ifFalse:[ #( autoload ) ]. + attributes := eachClass isLoaded ifTrue:[ #() ] ifFalse:[ #(autoload) ]. ]. ]. - s tab. + s tab; tab. attributes isEmptyOrNil ifTrue:[ - s nextPutAll:eachClass name asString storeString. + eachClass name printOn:s. ] ifFalse:[ - s nextPutAll:'('; nextPutAll:eachClass name asString storeString. - attributes do:[:eachAttribute | s nextPutAll:' '. s nextPutAll:eachAttribute storeString.]. - s nextPutAll:')'. + s nextPut:$(. eachClass name printOn:s. + attributes do:[:eachAttribute | s space. eachAttribute printOn:s.]. + s nextPut:$). ]. s cr. ] @@ -638,7 +643,7 @@ ]. " - stx_libbasic3 classNamesAndAttributes_code + stx_libbasic3 classNamesAndAttributes_code_ignoreOldDefinition:true " "Modified: / 08-08-2006 / 19:24:34 / fm" @@ -1653,13 +1658,13 @@ classNames := self compiled_classNames_common. classesLoaded := classNames - collect:[:nm | |cls| cls := Smalltalk classNamed:nm] + collect:[:nm | Smalltalk classNamed:nm] thenSelect:[:cls | cls notNil and:[cls isLoaded] ]. classNamesUnloaded := classNames select:[:nm | |cls| cls := Smalltalk classNamed:nm. cls isNil or:[cls isLoaded not]]. classesSorted := Class classesSortedByLoadOrder:classesLoaded. - classNamesSorted := classesSorted collect:[:cls |cls name]. + classNamesSorted := classesSorted collect:[:cls | cls name]. s nextPutAll:'"/ @@ -2260,13 +2265,8 @@ s nextPutLine:newClassLine ]. classNames := self compiled_classNames_common. - classesLoaded := classNames - collect:[:nm | - |cls| - - cls := Smalltalk classNamed:nm - ] - thenSelect:[:cls | cls notNil and:[ cls isLoaded ] ]. + classesLoaded := classNames collect:[:eachClassName | Smalltalk classNamed:eachClassName] + thenSelect:[:eachClass | eachClass notNil and:[eachClass isLoaded]]. classNamesUnloaded := classNames select:[:nm | |cls| @@ -2274,8 +2274,7 @@ cls := Smalltalk classNamed:nm. cls isNil or:[ cls isLoaded not ] ]. - classNamesSorted := (Class classesSortedByLoadOrder:classesLoaded) - collect:[:cls | cls name ]. + classNamesSorted := (Class classesSortedByLoadOrder:classesLoaded) collect:[:cls | cls name]. classNamesSorted do:putLineForClassName. classNamesUnloaded do:putLineForClassName. self namesAndAttributesIn:(self additionalClassNamesAndAttributes) @@ -2284,14 +2283,14 @@ putLineForClassName value:nm. ]. ]. - #( #('UNIX' unix) - #('WIN32' win32) - #('VMS' vms) - #('BEOS' beos) ) - pairsDo:[:ifdef :id | + #( ('UNIX' unix) + ('WIN32' win32) + ('VMS' vms) + ('BEOS' beos) ) + pairsDo:[:ifdef :platformName | |archClassNames archClassesLoaded| - archClassNames := self compiled_classNamesForPlatform:id. + archClassNames := self compiled_classNamesForPlatform:platformName. archClassNames notEmpty ifTrue:[ s nextPutLine:'#ifdef ' , ifdef. archClassNames do:[:clsName | @@ -2305,7 +2304,9 @@ " bosch_dapasx_datenbasis generateClassLines_libInit_dot_cc bosch_dapasx_kernel generateClassLines_libInit_dot_cc - stx_libbasic3 generateClassLines_libInit_dot_cc" + stx_libbasic3 generateClassLines_libInit_dot_cc + " + "Modified: / 16-08-2006 / 18:52:10 / User" "Created: / 19-09-2006 / 22:47:50 / cg" "Modified: / 20-09-2006 / 11:47:25 / cg" @@ -2409,12 +2410,9 @@ ]. classNames := self compiled_classNames_common. classesLoaded := classNames - collect:[:className | - |cls| - - cls := Smalltalk classNamed:className - ] - thenSelect:[:cls | cls notNil and:[ cls isLoaded ] ]. + collect:[:className | Smalltalk classNamed:className] + thenSelect:[:cls | cls notNil and:[cls isLoaded]]. + classesSorted := Class classesSortedByLoadOrder:classesLoaded. classesSorted do:putDependencyForClass. self namesAndAttributesIn:(self additionalClassNamesAndAttributes) @@ -2429,22 +2427,20 @@ ]. archClassNames := self compiled_classNamesForPlatform:whichArchitecture. archClassesLoaded := archClassNames - collect:[:className | - |cls| - - cls := Smalltalk classNamed:className - ] + collect:[:className | Smalltalk classNamed:className] thenSelect:[:cls | cls notNil and:[ cls isLoaded ] ]. + archClassesLoaded notEmpty ifTrue:[ - (Class classesSortedByLoadOrder:archClassesLoaded) - do:putDependencyForClass. + (Class classesSortedByLoadOrder:archClassesLoaded) do:putDependencyForClass. ]. self hasExtensionMethods ifTrue:putDependencyForExtensions. ] " stx_libbasic3 generateDependencies:#unix - stx_libbasic3 generateDependencies:#win32" + stx_libbasic3 generateDependencies:#win32 + " + "Modified: / 16-08-2006 / 18:52:10 / User" "Created: / 14-09-2006 / 12:38:57 / cg" "Modified: / 14-09-2006 / 17:04:21 / cg" @@ -2748,13 +2744,13 @@ ! searchForClasses - "answer all classes that belong to this project. + "answer all non-private classes that belong to this project. They are sorted in load order" ^ Class classesSortedByLoadOrder:(self searchForClassesWithProject: self package) " - self searchForClasses + stx_libbasic3 searchForClasses " "Modified: / 07-08-2006 / 21:56:25 / fm" @@ -3202,7 +3198,7 @@ !ProjectDefinition class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.81 2006-09-22 16:47:25 stefan Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.82 2006-09-25 19:18:01 stefan Exp $' ! ! ProjectDefinition initialize!