[gforth] / gforth / chains.fs  

gforth: gforth/chains.fs


1 : jwilke 1.1 \ chains.fs execution chains for gforth 21jun97jaw
2 :    
3 :     0 [IF]
4 :     This defines execution chains.
5 :     The first application for this is building initialization chains:
6 :     Think of many modules or program parts, each of it with some specific
7 :     initialization code. If we hardcode the initialization routines into a
8 :     "master-init" we will get unflexible and are not able only to load some
9 :     specific modules...
10 :    
11 :     The chain is basicaly a linked-list. Define a Variable for the head of
12 :     linked-list. Name it "foo8" or "foo-chain" to indicate it is a execution
13 :     chain.
14 :    
15 :     You can add a word to the list with "' my-init foo8 chained". You can
16 :     execute all the code with "foo8 chainperform".
17 :     [THEN]
18 :    
19 :     [IFUNDEF] linked
20 :     : linked here over @ a, swap ! ;
21 :     [THEN]
22 :    
23 :     \ generic chains
24 :    
25 :     : chained ( xt list -- ) \ gforth
26 :     linked , ;
27 :    
28 :     : chainperform ( list -- ) \ gforth
29 :     BEGIN @ dup WHILE dup cell+ perform REPEAT drop ;
30 :    

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help