Smalltalk.st
changeset 12376 4ba65bd9402f
parent 12358 686986c54ccc
child 12377 f9a9aea7ba0f
--- a/Smalltalk.st	Tue Oct 27 12:05:02 2009 +0100
+++ b/Smalltalk.st	Tue Oct 27 13:49:55 2009 +0100
@@ -2677,27 +2677,57 @@
     "
 !
 
+allLoadedProjectIDs
+
+    ^ self allProjectsIdsIncludingUnloadedClasses: false
+
+
+    "
+     Smalltalk allLoadedProjectIDs
+    "
+!
+
 allProjectIDs
+
+    ^ self allProjectsIdsIncludingUnloadedClasses: true
+
+
+    "
+     Smalltalk allProjectIDs
+    "
+!
+
+allProjectsIdsIncludingUnloadedClasses: includeUnloadedClasses
+    "Returns all projects ids.
+     Excludes projects coming from unloaded classes if includeUnloadedClasses is false.
+    "
+
     |allProjects|
 
     allProjects := Set new.
     self allClassesDo:[:eachClass |
         |cls pkg|
 
-        cls := eachClass theNonMetaclass.
-
-        pkg := cls package.
-        pkg "withoutSeparators" size > 0 ifTrue:[
-            allProjects add:pkg.
-        ] ifFalse:[
-            "/ for now, nameSpaces are not in any package;
-            "/ this might change. Then, 0-sized packages are
-            "/ illegal, and the following should be enabled.
-            "/ self halt
-        ].
-        cls isJavaClass ifFalse:[
-            cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-                allProjects add:mthd package asSymbol.
+        (eachClass isRealNameSpace not) ifTrue:[
+            (includeUnloadedClasses or:[eachClass isLoaded]) ifTrue:[
+                cls := eachClass theNonMetaclass.
+                cls isPrivate ifTrue:[
+                    cls := cls topOwningClass
+                ].
+                pkg := cls package.
+                pkg size > 0 ifTrue:[
+                    allProjects add:pkg.
+                ] ifFalse:[
+                    "/ for now, nameSpaces are not in any package;
+                    "/ this might change. Then, 0-sized packages are
+                    "/ illegal, and the following should be enabled.
+                    "/ self halt
+                ].
+                cls isJavaClass ifFalse:[
+                    cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+                        allProjects add:mthd package asSymbol.
+                    ].
+                ].
             ].
         ].
     ].
@@ -2705,7 +2735,8 @@
     ^ allProjects
 
     "
-     Smalltalk allProjectIDs
+     Smalltalk allProjectsIdsIncludingUnloadedClasses: true
+     Smalltalk allProjectsIdsIncludingUnloadedClasses: false
     "
 !
 
@@ -7321,9 +7352,9 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.901 2009-10-26 16:23:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.902 2009-10-27 12:49:55 fm Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.901 2009-10-26 16:23:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.902 2009-10-27 12:49:55 fm Exp $'
 ! !