Annotation of gforth/chains.fs, revision 1.2

1.1       jwilke      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: 
1.2     ! pazsan     19: has? cross 
        !            20: [IF]   e? compiler
        !            21: [ELSE] true
        !            22: [THEN]
        !            23: 
        !            24: [IF] \ only needed with compiler
        !            25: 
1.1       jwilke     26: [IFUNDEF] linked
                     27: : linked        here over @ a, swap ! ;
                     28: [THEN]
                     29: 
                     30: \ generic chains
                     31: 
                     32: : chained      ( xt list -- ) \ gforth
                     33:   linked , ;
1.2     ! pazsan     34: 
        !            35: [THEN]
1.1       jwilke     36: 
                     37: : chainperform ( list -- ) \ gforth
                     38:   BEGIN @ dup WHILE dup cell+ perform REPEAT drop ;
                     39: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>