refactored: moved packaging access from browser to here
authorClaus Gittinger <cg@exept.de>
Fri, 23 Oct 2009 16:22:57 +0200
changeset 12338 2026ed7d56fa
parent 12337 f7c19b610a4d
child 12339 918b3eddd723
refactored: moved packaging access from browser to here
ProjectDefinition.st
--- a/ProjectDefinition.st	Fri Oct 23 14:27:46 2009 +0200
+++ b/ProjectDefinition.st	Fri Oct 23 16:22:57 2009 +0200
@@ -1057,6 +1057,37 @@
     ^ subProjects
 !
 
+excludeClasses:toExclude usingCompiler:generator
+    |oldSpec newSpec newCode|
+
+    oldSpec := self classNamesAndAttributes.
+    newSpec := oldSpec copy.
+
+    toExclude do:[:eachClassToExclude |
+        |className|
+        className := eachClassToExclude theNonMetaclass name.
+        (self allClassNames includes:className) ifTrue:[
+            |idx|
+
+            idx := newSpec findFirst:[:entry | entry = className or:[entry first = className]].
+            idx ~~ 0 ifTrue:[
+                newSpec := newSpec copyWithoutIndex:idx.
+            ].
+        ].
+    ].
+
+    newSpec = oldSpec ifTrue: [^ self].
+
+    newCode := self classNamesAndAttributes_codeFor:newSpec.
+
+    generator
+        compile:newCode
+        forClass:self theMetaclass
+        inCategory:'description - contents'.
+
+    "Created: / 30-08-2007 / 18:28:28 / cg"
+!
+
 extensionMethodNames_code
     ^ self extensionMethodNames_code_ignoreOldEntries:true
 
@@ -1179,6 +1210,42 @@
     "Modified: / 10-10-2006 / 22:02:24 / cg"
 !
 
+includeClasses:toInclude usingCompiler:compiler
+    |oldSpec newSpec newCode|
+
+    oldSpec := self classNamesAndAttributes.
+    newSpec := oldSpec copy.
+
+    toInclude do:[:eachClassToInclude |
+        |className|
+
+        className := eachClassToInclude theNonMetaclass name.
+        (self compiled_classNames includes:className) ifFalse:[
+            | idx entry|
+
+            idx := oldSpec findFirst:[:entry | entry = className or:[entry first = className]].
+            idx == 0 ifTrue:[
+                newSpec := newSpec copyWith:(Array with:className)
+            ] ifFalse:[
+                entry := newSpec at:idx.
+                entry isArray ifTrue:[
+                    entry := entry copyWithout:#autoload
+                ].
+                newSpec at:idx put:entry
+            ].
+        ].
+    ].
+
+    newSpec = oldSpec ifTrue: [^ self].
+
+    newCode := self classNamesAndAttributes_codeFor:newSpec.
+
+    compiler
+        compile:newCode
+        forClass:self theMetaclass
+        inCategory:'description - contents'.
+!
+
 legalCopyright_code
     ^ String streamContents:[:s |
         s nextPutLine:'legalCopyright'.
@@ -1194,6 +1261,44 @@
     "Created: / 18-08-2006 / 16:21:01 / cg"
 !
 
+makeClassesAutoloaded:toMakeAutoloaded usingCompiler:generator
+    |oldSpec newCode newSpec|
+
+    oldSpec := self classNamesAndAttributes.
+    newSpec := oldSpec copy.
+
+    toMakeAutoloaded do:[:eachClassToMakeAutoloaded |
+        |className|
+
+        className := eachClassToMakeAutoloaded theNonMetaclass name.
+        (self autoloaded_classNames includes:className) ifFalse:[
+            |idx entry|
+
+            idx := newSpec findFirst:[:entry | entry = className or:[entry first = className]].
+            idx == 0 ifTrue:[
+                newSpec := newSpec copyWith:(Array with:className with:#autoload)
+            ] ifFalse:[
+                entry := newSpec at:idx.
+                entry isArray ifTrue:[
+                    entry := (entry copyWithout:#autoload) copyWith:#autoload.
+                ] ifFalse:[
+                    entry := Array with:entry with:#autoload
+                ].
+                newSpec at:idx put:entry.
+            ].
+        ].
+    ].
+
+    newSpec = oldSpec ifTrue: [^ self].
+
+    newCode := self classNamesAndAttributes_codeFor:newSpec.
+
+    generator
+        compile:newCode
+        forClass:self theMetaclass
+        inCategory:'description - contents'.
+!
+
 preRequisites_code
     "generate the code of the #preRequisites method"
 
@@ -4741,11 +4846,11 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.264 2009-10-22 17:34:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.265 2009-10-23 14:22:57 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.264 2009-10-22 17:34:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.265 2009-10-23 14:22:57 cg Exp $'
 ! !
 
 ProjectDefinition initialize!