--- a/Project.st Fri Sep 17 13:36:14 1999 +0200
+++ b/Project.st Fri Sep 17 13:36:46 1999 +0200
@@ -102,7 +102,7 @@
|packages anyUnloaded|
- packages := IdentitySet new.
+ packages := Dictionary new.
AllProjects isNil ifTrue:[
AllProjects := OrderedCollection new.
@@ -116,8 +116,7 @@
aClass isMeta ifFalse:[
(aClass isNamespace not or:[aClass == Smalltalk]) ifTrue:[
packageID := aClass package asSymbol.
- (packages includes:packageID) ifFalse:[
- packages add:packageID.
+ (packages includesKey:packageID) ifFalse:[
"/ a new one ...
@@ -152,6 +151,7 @@
prj name:nm.
AllProjects add:prj.
+ packages at:packageID put:prj.
].
].
].
@@ -160,11 +160,9 @@
|packageID prj who mthdClass|
packageID := aMethod package asSymbol.
- (packages includes:packageID) ifFalse:[
+ (packages includesKey:packageID) ifFalse:[
who := aMethod who.
who notNil ifTrue:[ "/ skip unbound methods ...
- packages add:packageID.
-
"/ a new one ...
prj := self new.
"/ prj name:libName.
@@ -175,9 +173,32 @@
prj repositoryDirectory:'???'.
prj isLoaded:true.
AllProjects add:prj.
+ packages at:packageID put:prj.
]
]
].
+
+ "/ walk over binary modules, to find out directory names ...
+
+ ObjectFileLoader loadedObjectHandles do:[:h |
+ |cls prj mDir|
+
+ cls := h classes firstIfEmpty:nil.
+ cls notNil ifTrue:[
+ prj := packages at:cls package ifAbsent:nil.
+ prj notNil ifTrue:[
+ mDir := h pathName asFilename directory pathName.
+ prj directory = '???' ifTrue:[
+ prj directory:mDir
+ ] ifFalse:[
+ prj directory ~= mDir ifTrue:[
+ ('Project [warning]: conflicting project directories for ' , cls package) infoPrintCR.
+ ]
+ ]
+ ]
+ ].
+ ].
+
self changed:#allProjects
"/ |stx p|
@@ -2098,6 +2119,6 @@
!Project class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.93 1999-09-17 10:58:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.94 1999-09-17 11:36:46 cg Exp $'
! !
Project initialize!