File:  [gforth] / gforth / chains.fs
Revision 1.1: download - view: text, annotated - select for diffs
Sun Jul 6 14:15:10 1997 UTC (22 years ago) by jwilke
Branches: MAIN
CVS tags: HEAD
Generic execution chains. Will be used for the init-chain!
Jens

    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: 

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