[Pkg] Monticello Public: PackageInfo-Base-kph.54.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Fri Oct 3 22:23:12 UTC 2008
A new version of PackageInfo-Base was added to project Monticello Public:
http://www.squeaksource.com/mc/PackageInfo-Base-kph.54.mcz
==================== Summary ====================
Name: PackageInfo-Base-kph.54
Author: kph
Time: 3 October 2008, 11:23:10 pm
UUID: 895fc473-a8eb-46c3-9d63-7cb9ff848806
Ancestors: PackageInfo-Base-cds.53
refactor to avoid creating as many intermediate collections
=============== Diff against PackageInfo-Base-cds.53 ===============
Item was added:
+ ----- Method: PackageInfo>>coreSelectorsForClass:do: (in category 'iterator versions') -----
+ coreSelectorsForClass: aClass do: aBlock
+
+ | foreign |
+
+ foreign := (self foreignExtensionSelectorsForClass: aClass)
+ add: #DoIt;
+ add: #DoItIn: ;
+ yourself.
+
+ (self allSelectorsForClass: aClass do: [ :sel | (foreign includes: sel) ifFalse:[ aBlock value: sel ] ])
+ !
Item was added:
+ ----- Method: PackageInfo>>classesDo: (in category 'iterator versions') -----
+ classesDo: aBlock
+
+ ^ self loadedClasses do: aBlock!
Item was added:
+ ----- Method: PackageInfo>>foreignExtensionSelectorsForClass: (in category 'iterator versions') -----
+ foreignExtensionSelectorsForClass: aClass
+
+ "return a set to speed tests for inclusion"
+
+ | set |
+
+ set := IdentitySet new.
+
+ (self foreignExtensionCategoriesForClass: aClass)
+ do: [:cat | set addAll: (aClass organization listAtCategoryNamed: cat) ].
+
+ ^ set!
Item was changed:
----- Method: PackageInfo>>classes (in category 'listing') -----
classes
+ ^ self loadedClasses asOrderedCollection!
- ^ self loadedClasses!
Item was added:
+ ----- Method: PackageInfo>>allSelectorsForClass:do: (in category 'iterator versions') -----
+ allSelectorsForClass: aClass do: aBlock
+
+ "iterator version of #allMethodsForClass:"
+
+ aClass basicLocalSelectors isNil
+ ifTrue: [aClass selectorsDo: aBlock ]
+ ifFalse: [aClass basicLocalSelectors do: aBlock ].
+ !
Item was changed:
+ ----- Method: PackageInfo>>coreMethods (in category 'enumerating') -----
- ----- Method: PackageInfo>>coreMethods (in category 'listing') -----
coreMethods
+
+ | methods |
+
+ methods := OrderedCollection new.
+
+ self coreClassesAndSelectorsDo: [ :c :s | methods add: (self referenceForMethod: s ofClass: c) ].
+
+ ^ methods
+ !
- ^ self classesAndMetaClasses gather: [:class | self coreMethodsForClass: class]!
Item was changed:
+ ----- Method: PackageInfo>>loadedClasses (in category 'iterator versions') -----
- ----- Method: PackageInfo>>loadedClasses (in category 'listing') -----
loadedClasses
+
+ "returns a SortedCollection"
+
^(self systemCategories gather:
[:cat |
(SystemOrganization listAtCategoryNamed: cat)
collect: [:className | Smalltalk at: className]])
+ asSortedCollection: [:a :b | a className <= b className]
+
+ !
- sortBy: [:a :b | a className <= b className]!
Item was added:
+ ----- Method: PackageInfo>>coreClassesAndSelectorsDo: (in category 'listing') -----
+ coreClassesAndSelectorsDo: aBlock
+ self classesAndMetaClassesDo: [:class | self coreSelectorsForClass: class do: [ :sel | aBlock value: class value: sel ] ]!
Item was changed:
----- Method: PackageInfo>>methods (in category 'listing') -----
methods
+ ^ self coreMethods addAll: self extensionMethods; yourself
+ !
- ^ (self extensionMethods, self coreMethods)
- select: [:method | method isValid and: [(#(DoIt DoItIn:) includes: method methodSymbol) not]]!
Item was added:
+ ----- Method: PackageInfo>>classesAndMetaClassesDo: (in category 'listing') -----
+ classesAndMetaClassesDo: aBlock
+
+ "classes and metaClasses orders the classes (sorted) first,
+ here the order is class followed by Metaclass"
+
+ self classesDo: [ :ea |
+
+ aBlock value: ea.
+ aBlock value: ea classSide
+ ].
+ !
Item was changed:
+ ----- Method: PackageInfo>>externalRefsSelect:thenCollect: (in category 'comparing') -----
- ----- Method: PackageInfo>>externalRefsSelect:thenCollect: (in category 'dependencies') -----
externalRefsSelect: selBlock thenCollect: colBlock
+ | pkgMethods dependents refs extMethods otherClasses classNames |
- | pkgMethods dependents refs extMethods otherClasses otherMethods classNames |
classNames := self classes collect: [:c | c name].
extMethods := self extensionMethods collect: [:mr | mr methodSymbol].
otherClasses := self externalClasses difference: self externalSubclasses.
+
+ pkgMethods := self methods.
+ otherClasses do: [ :cl | self coreSelectorsForClass: cl do: [ :sel | pkgMethods remove: (self referenceForMethod: sel ofClass: cl) ifAbsent: [] ]].
+
- otherMethods := otherClasses gather: [:c | c selectors].
- pkgMethods := self methods asSet collect: [:mr | mr methodSymbol].
- pkgMethods removeAllFoundIn: otherMethods.
-
dependents := Set new.
otherClasses do: [:c |
c selectorsAndMethodsDo:
[:sel :compiled |
(extMethods includes: sel) ifFalse:
[refs := compiled literals select: selBlock thenCollect: colBlock.
refs do: [:ea |
+ ((classNames includes: ea) or: [pkgMethods includes: (self referenceForMethod: sel ofClass: c) ])
- ((classNames includes: ea) or: [pkgMethods includes: ea])
ifTrue: [dependents add: (self referenceForMethod: sel ofClass: c) -> ea]]]]].
+ ^ dependents !
- ^ dependents!
Item was removed:
- ----- Method: PackageInfo>>selectors (in category 'listing') -----
- selectors
- ^ self methods collect: [:ea | ea methodSymbol]!
Item was removed:
- ----- Method: PackageInfo>>removeMethod: (in category 'modifying') -----
- removeMethod: aMethodReference!
More information about the Packages
mailing list