added: #withClass:loadedDo:
utility - useful at more than one place...
--- a/Autoload.st Tue Feb 08 10:04:09 2011 +0100
+++ b/Autoload.st Tue Feb 08 20:03:57 2011 +0100
@@ -760,14 +760,47 @@
^ LoadedClasses includes:aClass
! !
+!Autoload class methodsFor:'utilities'!
+
+withClass:aClass loadedDo:aBlock
+ "ensure that aClass is loaded, while evaluating aBlock for it"
+
+ |wasLoaded loadedClass|
+
+ wasLoaded := aClass isLoaded.
+ wasLoaded ifTrue:[
+ ^ aBlock value:aClass
+ ].
+
+ ParserFlags
+ withSTCCompilation:#never
+ do:[
+ loadedClass := aClass autoload.
+ ].
+
+
+ ^ [
+ aBlock value:loadedClass
+ ] ensure:[
+ aClass unload
+ ]
+
+ "
+ Autoload withClass:Array loadedDo:[:cls | self assert:cls isLoaded]
+ Autoload withClass:Cons loadedDo:[:cls | self assert:cls isLoaded]
+ "
+
+ "Created: / 08-02-2011 / 20:01:32 / cg"
+! !
+
!Autoload class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.157 2010-03-13 11:36:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.158 2011-02-08 19:03:57 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.157 2010-03-13 11:36:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.158 2011-02-08 19:03:57 cg Exp $'
! !
Autoload initialize!