--- a/BContext.st Thu Apr 25 18:47:14 1996 +0200
+++ b/BContext.st Thu Apr 25 18:49:43 1996 +0200
@@ -41,7 +41,14 @@
(has become necessary with cheap blocks, which have no home).
WARNING: layout and size known by compiler and runtime system -
- do not change.
+ do not change.
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ Context Block Method
+ Exception Signal
"
! !
@@ -204,5 +211,5 @@
!BlockContext class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/BContext.st,v 1.20 1996-04-16 09:28:38 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/BContext.st,v 1.21 1996-04-25 16:49:34 cg Exp $'
! !
--- a/Block.st Thu Apr 25 18:47:14 1996 +0200
+++ b/Block.st Thu Apr 25 18:49:43 1996 +0200
@@ -67,7 +67,7 @@
somewhere up in the calling-tree. Then, to do the long-jump from out of some
deeply nested method, simply do: ''catchBlock value''.
- Instance variables:
+ [Instance variables:]
home <Context> the context where this block was created (i.e. defined)
this may be a blockContext or a methodContext
@@ -78,27 +78,38 @@
for compiled blocks, this is nil.
- Class variables:
+ [Class variables:]
InvalidNewSignal raised if a Block is tried to be created
with new (which is not allowed).
Only the VM is allowed to create Blocks.
+
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ Process Context
+ Collection
+ ( contexts. blocks & unwinding : programming/contexts.html)
"
!
examples
"
- basic mechanism:
+ define a block and evaluate it:
|b|
b := [ Transcript showCr:'hello' ].
+
Transcript showCr:'now evaluating the block ...'.
b value.
+
even here, blocks are involved:
(although, the compiler optimizes things if possible)
@@ -110,6 +121,7 @@
]
+
here things become obvious:
|yesBlock noBlock|
@@ -122,6 +134,7 @@
ifFalse:noBlock
+
simple loops:
not very objectOriented:
@@ -149,9 +162,11 @@
]
+
looping over collections:
- bad code: [only works with numeric-indexable collections]
+ bad code:
+ (only works with numeric-indexable collections)
|i coll|
@@ -163,9 +178,11 @@
]
- just as bad (well, marginally better ;-):
- |coll| [only works with numeric-indexable collections]
+ just as bad (well, marginally better ;-):
+ (only works with numeric-indexable collections)
+
+ |coll|
coll := #(9 8 7 6 5).
1 to:coll size do:[:i |
@@ -173,16 +190,17 @@
]
- the smalltalk way:
- |coll| [works with any collection]
+ the smalltalk way:
+ (works with any collection)
+
+ |coll|
coll := #(9 8 7 6 5).
coll do:[:element |
Transcript showCr:element.
]
-
Rule: use enumeration protocol of the collection instead of
manually indexing it. [with few exceptions]
@@ -209,7 +227,8 @@
] forkAt:(Processor userBackgroundPriority)
- handling exceptions:
+
+ handling exceptions:
Object errorSignal handle:[:ex |
Transcript showCr:'exception handler forces return'.
@@ -221,7 +240,8 @@
]
- performing cleanup actions:
+
+ performing cleanup actions:
Object errorSignal handle:[:ex |
Transcript showCr:'exception handler forces return'.
@@ -237,9 +257,9 @@
]
- delayed execution (visitor pattern):
- [looking carefully into the example,
- C/C++ programmers may raise their eyes]
+ delayed execution (visitor pattern):
+ (looking carefully into the example,
+ C/C++ programmers may raise their eyes ;-)
|showBlock countBlock
howMany
@@ -1246,6 +1266,6 @@
!Block class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.54 1996-04-23 14:32:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.55 1996-04-25 16:48:33 cg Exp $'
! !
Block initialize!
--- a/BlockContext.st Thu Apr 25 18:47:14 1996 +0200
+++ b/BlockContext.st Thu Apr 25 18:49:43 1996 +0200
@@ -41,7 +41,14 @@
(has become necessary with cheap blocks, which have no home).
WARNING: layout and size known by compiler and runtime system -
- do not change.
+ do not change.
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ Context Block Method
+ Exception Signal
"
! !
@@ -204,5 +211,5 @@
!BlockContext class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/BlockContext.st,v 1.20 1996-04-16 09:28:38 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/BlockContext.st,v 1.21 1996-04-25 16:49:34 cg Exp $'
! !
--- a/CheapBlk.st Thu Apr 25 18:47:14 1996 +0200
+++ b/CheapBlk.st Thu Apr 25 18:49:43 1996 +0200
@@ -47,7 +47,7 @@
creating method explicitely - otherwise, the system had no
chance of finding the source-position of the block.
- Instance variables:
+ [Instance variables:]
selfValue <Object> copied self value
(if its a copying block)
@@ -55,6 +55,13 @@
method <Method> method where block was created
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ Block Context Method
+ ( contexts, stacks & unwinding :html: programming/contexts.html )
"
! !
@@ -120,5 +127,5 @@
!CheapBlock class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/CheapBlk.st,v 1.13 1996-04-23 14:04:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/CheapBlk.st,v 1.14 1996-04-25 16:49:05 cg Exp $'
! !
--- a/CheapBlock.st Thu Apr 25 18:47:14 1996 +0200
+++ b/CheapBlock.st Thu Apr 25 18:49:43 1996 +0200
@@ -47,7 +47,7 @@
creating method explicitely - otherwise, the system had no
chance of finding the source-position of the block.
- Instance variables:
+ [Instance variables:]
selfValue <Object> copied self value
(if its a copying block)
@@ -55,6 +55,13 @@
method <Method> method where block was created
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ Block Context Method
+ ( contexts, stacks & unwinding :html: programming/contexts.html )
"
! !
@@ -120,5 +127,5 @@
!CheapBlock class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CheapBlock.st,v 1.13 1996-04-23 14:04:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CheapBlock.st,v 1.14 1996-04-25 16:49:05 cg Exp $'
! !
--- a/CompCode.st Thu Apr 25 18:47:14 1996 +0200
+++ b/CompCode.st Thu Apr 25 18:49:43 1996 +0200
@@ -44,14 +44,14 @@
(the compilers create Blocks, Methods etc.)
- Instance variables:
+ [Instance variables:]
flags <SmallInteger> special flag bits coded in a number
byteCode <ByteArray> bytecode if its an interpreted codeobject
literals <Array> the block/methods literal array
- Class variables:
+ [Class variables:]
NoByteCodeSignal raised if a codeObject is about to be executed
which has neither code nor byteCode (i.e. both are nil)
@@ -64,6 +64,10 @@
all of these signals are children of ExecutionErrorSignal.
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
+
"
! !
@@ -372,6 +376,6 @@
!CompiledCode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/CompCode.st,v 1.28 1996-04-23 14:04:07 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/CompCode.st,v 1.29 1996-04-25 16:48:59 cg Exp $'
! !
CompiledCode initialize!
--- a/CompiledCode.st Thu Apr 25 18:47:14 1996 +0200
+++ b/CompiledCode.st Thu Apr 25 18:49:43 1996 +0200
@@ -44,14 +44,14 @@
(the compilers create Blocks, Methods etc.)
- Instance variables:
+ [Instance variables:]
flags <SmallInteger> special flag bits coded in a number
byteCode <ByteArray> bytecode if its an interpreted codeobject
literals <Array> the block/methods literal array
- Class variables:
+ [Class variables:]
NoByteCodeSignal raised if a codeObject is about to be executed
which has neither code nor byteCode (i.e. both are nil)
@@ -64,6 +64,10 @@
all of these signals are children of ExecutionErrorSignal.
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
+
"
! !
@@ -372,6 +376,6 @@
!CompiledCode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.28 1996-04-23 14:04:07 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.29 1996-04-25 16:48:59 cg Exp $'
! !
CompiledCode initialize!
--- a/Context.st Thu Apr 25 18:47:14 1996 +0200
+++ b/Context.st Thu Apr 25 18:49:43 1996 +0200
@@ -147,6 +147,10 @@
WARNING: layout and size known by the compiler and runtime system - do not change.
+
+ [author:]
+ Claus Gittinger
+
[see also:]
Block Process Method
( contexts, stacks & unwinding : programming/contexts.html)
@@ -1159,6 +1163,6 @@
!Context class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.56 1996-04-25 11:07:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.57 1996-04-25 16:49:43 cg Exp $'
! !
Context initialize!
--- a/ExecFunc.st Thu Apr 25 18:47:14 1996 +0200
+++ b/ExecFunc.st Thu Apr 25 18:49:43 1996 +0200
@@ -43,7 +43,7 @@
the compilers create instances of Method & Block, while compiling.
- Instance variables:
+ [Instance variables:]
code <not_an_object> the function pointer to the machine code.
Not accessable from smalltalk code.
@@ -51,7 +51,7 @@
- Class variables:
+ [Class variables:]
ExecutionErrorSignal parent of all execution errors
(not raised itself)
@@ -59,6 +59,9 @@
InvalidCodeSignal codeObject is not executable
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
"
! !
@@ -295,6 +298,6 @@
!ExecutableFunction class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExecFunc.st,v 1.25 1996-04-23 14:04:00 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExecFunc.st,v 1.26 1996-04-25 16:48:53 cg Exp $'
! !
ExecutableFunction initialize!
--- a/ExecutableFunction.st Thu Apr 25 18:47:14 1996 +0200
+++ b/ExecutableFunction.st Thu Apr 25 18:49:43 1996 +0200
@@ -43,7 +43,7 @@
the compilers create instances of Method & Block, while compiling.
- Instance variables:
+ [Instance variables:]
code <not_an_object> the function pointer to the machine code.
Not accessable from smalltalk code.
@@ -51,7 +51,7 @@
- Class variables:
+ [Class variables:]
ExecutionErrorSignal parent of all execution errors
(not raised itself)
@@ -59,6 +59,9 @@
InvalidCodeSignal codeObject is not executable
NOTICE: layout known by runtime system and compiler - do not change
+
+ [author:]
+ Claus Gittinger
"
! !
@@ -295,6 +298,6 @@
!ExecutableFunction class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.25 1996-04-23 14:04:00 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.26 1996-04-25 16:48:53 cg Exp $'
! !
ExecutableFunction initialize!
--- a/Message.st Thu Apr 25 18:47:14 1996 +0200
+++ b/Message.st Thu Apr 25 18:49:43 1996 +0200
@@ -69,6 +69,9 @@
[See also:]
Signal Exception MessageSend
+
+ [author:]
+ Claus Gittinger
"
! !
@@ -179,5 +182,5 @@
!Message class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Message.st,v 1.18 1996-04-23 14:47:53 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Message.st,v 1.19 1996-04-25 16:48:48 cg Exp $'
! !
--- a/MessageSend.st Thu Apr 25 18:47:14 1996 +0200
+++ b/MessageSend.st Thu Apr 25 18:49:43 1996 +0200
@@ -66,6 +66,9 @@
[See also:]
Block Message
+
+ [author:]
+ Claus Gittinger
"
!
@@ -211,5 +214,5 @@
!MessageSend class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/MessageSend.st,v 1.10 1996-04-23 14:54:20 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/MessageSend.st,v 1.11 1996-04-25 16:48:19 cg Exp $'
! !
--- a/Method.st Thu Apr 25 18:47:14 1996 +0200
+++ b/Method.st Thu Apr 25 18:49:43 1996 +0200
@@ -62,25 +62,28 @@
which is identified as executable (assuming that the first instance variable
is the machine-code address) - this allows for easy future extension.
- Instance variables:
+ [Instance variables:]
- source <String> the source itself (if sourcePosition isNil)
- or the fileName where the source is found
+ source <String> the source itself (if sourcePosition isNil)
+ or the fileName where the source is found
- sourcePosition <Integer> the position of the methods chunk in the file
+ sourcePosition <Integer> the position of the methods chunk in the file
- category <Symbol> the methods category
- package <Symbol> the package, in which the methods was defined
+ category <Symbol> the methods category
+ package <Symbol> the package, in which the methods was defined
- Class variables:
+ [Class variables:]
- PrivateMethodSignal raised on privacy violation (see docu)
+ PrivateMethodSignal raised on privacy violation (see docu)
- LastFileReference weak reference to the last sourceFile
- LastSourceFileName to speedup source access via NFS
+ LastFileReference weak reference to the last sourceFile
+ LastSourceFileName to speedup source access via NFS
WARNING: layout known by compiler and runtime system - dont change
+
+ [author:]
+ Claus Gittinger
"
!
@@ -2105,6 +2108,6 @@
!Method class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.87 1996-04-23 14:04:29 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.88 1996-04-25 16:49:19 cg Exp $'
! !
Method initialize!