Diff for /gforth/fflib.fs between versions 1.19 and 1.26

version 1.19, 2008/02/12 20:28:51 version 1.26, 2008/09/18 02:42:24
Line 1 Line 1
 \ lib.fs        shared library support package          16aug03py  \ lib.fs        shared library support package          16aug03py
   
 \ Copyright (C) 1995,1996,1997,1998,2000,2003,2005,2006,2007 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,1998,2000,2003,2005,2006,2007,2008 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 18 Line 18
 \ along with this program. If not, see http://www.gnu.org/licenses/.  \ along with this program. If not, see http://www.gnu.org/licenses/.
   
 \ replacements for former primitives  \ replacements for former primitives
 require libcc.fs  c-library fflib
   s" avcall" add-lib
   s" callback" add-lib
   
 \c #include <avcall.h>  \c #include <avcall.h>
 \c #include <callback.h>  \c #include <callback.h>
 \c static av_alist alist;  \c static av_alist alist;
 \c static va_alist gforth_clist;  \c static va_alist gforth_clist;
   \c #ifndef HAS_BACKLINK
   \c static void **saved_gforth_pointers;
   \c #endif
 \c static float frv;  \c static float frv;
 \c static int irv;  \c static int irv;
 \c static double drv;  \c static double drv;
 \c static long long llrv;  \c static long long llrv;
 \c static void * prv;  \c static void * prv;
 \c static Cell *gforth_RP;  
 \c static char *gforth_LP;  
 \c typedef void *Label;  \c typedef void *Label;
 \c typedef Label *Xt;  \c typedef Label *Xt;
 \c Label *gforth_engine(Xt *ip, Cell *sp, Cell *rp0, Float *fp, char *lp);  
 \c   \c 
 \c void gforth_callback_ffcall(Xt* fcall, void * alist)  \c void gforth_callback_ffcall(Xt* fcall, void * alist)
 \c {  \c {
 \c   /* save global valiables */  \c #ifndef HAS_BACKLINK
 \c   Cell *rp = gforth_RP;  \c   void **gforth_pointers = saved_gforth_pointers;
 \c   Cell *sp = gforth_SP;  \c #endif
 \c   Float *fp = gforth_FP;  \c   {
 \c   char *lp = gforth_LP;  \c     /* save global valiables */
 \c   va_alist clist = gforth_clist;  \c     Cell *rp = gforth_RP;
   \c     Cell *sp = gforth_SP;
   \c     Float *fp = gforth_FP;
   \c     char *lp = gforth_LP;
   \c     va_alist clist = gforth_clist;
 \c   \c 
 \c   gforth_clist = (va_alist)alist;  \c     gforth_clist = (va_alist)alist;
 \c   \c 
 \c   gforth_engine(fcall, sp, rp, fp, lp);  \c     gforth_engine(fcall, sp, rp, fp, lp, gforth_UP);
 \c   \c 
 \c   /* restore global variables */  \c     /* restore global variables */
 \c   gforth_RP = rp;  \c     gforth_RP = rp;
 \c   gforth_SP = sp;  \c     gforth_SP = sp;
 \c   gforth_FP = fp;  \c     gforth_FP = fp;
 \c   gforth_LP = lp;  \c     gforth_LP = lp;
 \c   gforth_clist = clist;  \c     gforth_clist = clist;
   \c   }
 \c }  \c }
   
 \c #define av_start_void1(c_addr) av_start_void(alist, c_addr)  \c #define av_start_void1(c_addr) av_start_void(alist, c_addr)
Line 126  c-function va-return-longlong1 va_return Line 133  c-function va-return-longlong1 va_return
 c-function va-return-float1 va_return_float1 r -- void  c-function va-return-float1 va_return_float1 r -- void
 \c #define va_return_double1(r) va_return_double(gforth_clist,r)  \c #define va_return_double1(r) va_return_double(gforth_clist,r)
 c-function va-return-double1 va_return_double1 r -- void  c-function va-return-double1 va_return_double1 r -- void
   end-c-library
   
 : av-int-r      2r> >r av-int ;  : av-int-r      2r> >r av-int ;
 : av-float-r    f@local0 lp+ av-float ;  : av-float-r    f@local0 lp+ av-float ;

Removed from v.1.19  
changed lines
  Added in v.1.26


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