File:  [gforth] / gforth / chains.fs
Revision 1.2: download - view: text, annotated - select for diffs
Sun Jul 5 20:49:58 1998 UTC (25 years, 9 months ago) by pazsan
Branches: MAIN
CVS tags: HEAD
Several fixes and typos I forgot to check in until recently
Documentation additions (not completed)

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

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