PeekableStream.st
changeset 10002 3a70c4f5afe0
parent 9356 dfc36db0f470
child 10120 cc81848112f4
--- a/PeekableStream.st	Thu Sep 21 17:42:44 2006 +0200
+++ b/PeekableStream.st	Thu Sep 21 18:21:27 2006 +0200
@@ -14,7 +14,8 @@
 
 Stream subclass:#PeekableStream
 	instanceVariableNames:''
-	classVariableNames:'ErrorDuringFileInSignal CurrentFileInDirectoryQuerySignal'
+	classVariableNames:'ErrorDuringFileInSignal CurrentFileInDirectoryQuerySignal
+		CurrentSourceContainerQuery'
 	poolDictionaries:''
 	category:'Streams'
 !
@@ -60,6 +61,11 @@
         CurrentFileInDirectoryQuerySignal nameClass:self message:#currentFileInDirectoryQuerySignal.
         CurrentFileInDirectoryQuerySignal notifierString:'query for current directory when filing in'.
         CurrentFileInDirectoryQuerySignal handlerBlock:[:ex | ex proceedWith:Filename currentDirectory].
+
+        CurrentSourceContainerQuery := QuerySignal new.
+        CurrentSourceContainerQuery nameClass:self message:#currentClassFilenameQuery.
+        CurrentSourceContainerQuery notifierString:'query for current sorce container name when filing in'.
+        CurrentSourceContainerQuery handlerBlock:[:ex | ex proceedWith:nil].
     ]
 
     "
@@ -77,6 +83,14 @@
      current directory, by asking this querySignal (which is nice sometimes)."
 
     ^ CurrentFileInDirectoryQuerySignal
+!
+
+currentSourceContainerQuery
+    "return the querySignal, which can be used to ask for the current source container filename
+     during a fileIn 
+     Using this, allows for the loaded code to remember the classes file name."
+
+    ^ CurrentSourceContainerQuery
 ! !
 
 !PeekableStream class methodsFor:'queries'!
@@ -85,6 +99,12 @@
     "during a fileIn (if a script), the script can ask for the current directory"
 
     ^ CurrentFileInDirectoryQuerySignal query
+!
+
+currentSourceContainer
+    "during a fileIn (if a script), the script can ask for the current filename"
+
+    ^ CurrentSourceContainerQuery query
 ! !
 
 !PeekableStream methodsFor:'chunk input/output'!
@@ -573,7 +593,9 @@
     [   
         Smalltalk systemPath:(oldPath copy addFirst:thisDirectoryPathName; yourself).
         CurrentFileInDirectoryQuerySignal answer:thisDirectory do:[
-            val := self basicFileInNotifying:notifiedLoader passChunk:passChunk.
+            CurrentSourceContainerQuery answer:self do:[
+                val := self basicFileInNotifying:notifiedLoader passChunk:passChunk.
+            ].
         ]
     ] ensure:[
         "take care, someone could have changed SystemPath during fileIn!!"
@@ -949,7 +971,7 @@
 !PeekableStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.29 2006-05-08 16:54:42 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.30 2006-09-21 16:21:27 stefan Exp $'
 ! !
 
 PeekableStream initialize!