--- 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 $'
! !