guile-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

guile/guile-core/libguile ChangeLog Makefile.am...


From: Gary Houston
Subject: guile/guile-core/libguile ChangeLog Makefile.am...
Date: Sun, 26 Nov 2000 10:27:49 -0800

CVSROOT:        /cvs
Module name:    guile
Changes by:     Gary Houston <address@hidden>   00/11/26 10:27:49

Modified files:
        guile-core/libguile: ChangeLog Makefile.am continuations.c 
                             init.c struct.h 
Added files:
        guile-core/libguile: values.c values.h 

Log message:
        * reimplementation of values, call-with-values as primitives:
        
        * values.c, values.h: new files.  use a struct to contain multiple
        values, similar to the previous Scheme-level implementation.
        * Makefile.am: add values.c, values.h, values.x.
        * continuations.c (continuation_apply): support R5RS multiple value
        continuations.
        * init.c: call scm_init_values.
        * struct.h: define SCM_SET_STRUCT_PRINTER.

CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/values.c.diff?r1=NONE&r2=1.1
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/values.h.diff?r1=NONE&r2=1.1
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/ChangeLog.diff?r1=1.1178&r2=1.1179
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/Makefile.am.diff?r1=1.120&r2=1.121
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/continuations.c.diff?r1=1.26&r2=1.27
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/init.c.diff?r1=1.105&r2=1.106
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/struct.h.diff?r1=1.33&r2=1.34

Patches:
Index: guile/guile-core/libguile/ChangeLog
diff -u guile/guile-core/libguile/ChangeLog:1.1178 
guile/guile-core/libguile/ChangeLog:1.1179
--- guile/guile-core/libguile/ChangeLog:1.1178  Sat Nov 25 08:58:25 2000
+++ guile/guile-core/libguile/ChangeLog Sun Nov 26 10:27:48 2000
@@ -1,3 +1,15 @@
+2000-11-26  Gary Houston  <address@hidden>
+
+       * reimplementation of values, call-with-values as primitives:
+       
+       * values.c, values.h: new files.  use a struct to contain multiple
+       values, similar to the previous Scheme-level implementation.
+       * Makefile.am: add values.c, values.h, values.x.
+       * continuations.c (continuation_apply): support R5RS multiple value
+       continuations.
+       * init.c: call scm_init_values.
+       * struct.h: define SCM_SET_STRUCT_PRINTER.
+
 2000-11-25  Gary Houston  <address@hidden>
 
        * use an applicable SMOB to represent continuations, instead of a
Index: guile/guile-core/libguile/Makefile.am
diff -u guile/guile-core/libguile/Makefile.am:1.120 
guile/guile-core/libguile/Makefile.am:1.121
--- guile/guile-core/libguile/Makefile.am:1.120 Sat Nov 18 14:18:03 2000
+++ guile/guile-core/libguile/Makefile.am       Sun Nov 26 10:27:48 2000
@@ -49,7 +49,7 @@
     print.c procprop.c procs.c random.c read.c root.c scmsigs.c                
 \
     script.c simpos.c smob.c sort.c srcprop.c stackchk.c stacks.c       \
     stime.c strings.c strop.c strorder.c strports.c struct.c symbols.c  \
-    tag.c throw.c variable.c vectors.c version.c vports.c weaks.c       \
+    tag.c throw.c values.c variable.c vectors.c version.c vports.c weaks.c \
     gc_os_dep.c properties.c
 
 DOT_X_FILES =                                                          \
@@ -64,7 +64,7 @@
     procs.x random.x read.x root.x scmsigs.x                           \
     script.x simpos.x smob.x socket.x sort.x srcprop.x stackchk.x      \
     stacks.x stime.x strings.x strop.x strorder.x strports.x struct.x  \
-    symbols.x tag.x throw.x variable.x vectors.x                       \
+    symbols.x tag.x throw.x values.x variable.x vectors.x              \
     version.x vports.x weaks.x properties.x
 
 EXTRA_DOT_X_FILES = debug-malloc.x filesys.x net_db.x posix.x ramap.x  \
@@ -83,8 +83,9 @@
     procprop.doc procs.doc random.doc read.doc root.doc scmsigs.doc      \
     script.doc simpos.doc smob.doc socket.doc sort.doc srcprop.doc       \
     stackchk.doc stacks.doc stime.doc strings.doc strop.doc strorder.doc  \
-    strports.doc struct.doc symbols.doc tag.doc throw.doc variable.doc   \
-    vectors.doc version.doc vports.doc weaks.doc properties.doc
+    strports.doc struct.doc symbols.doc tag.doc throw.doc values.doc     \
+    variable.doc vectors.doc version.doc vports.doc weaks.doc             \
+    properties.doc
 
 EXTRA_DOT_DOC_FILES = @EXTRA_DOT_DOC_FILES@
 
@@ -129,7 +130,8 @@
     ramap.h read.h root.h scmsigs.h validate.h script.h simpos.h        \
     smob.h socket.h sort.h srcprop.h stackchk.h stacks.h stime.h        \
     strings.h strop.h strorder.h strports.h struct.h symbols.h tag.h    \
-    tags.h throw.h unif.h variable.h vectors.h version.h vports.h       \
+    tags.h throw.h unif.h values.h variable.h vectors.h version.h        \
+    vports.h                                                             \
     weaks.h snarf.h threads.h coop-defs.h fluids.h iselect.h            \
     debug-malloc.h properties.h
 
Index: guile/guile-core/libguile/continuations.c
diff -u guile/guile-core/libguile/continuations.c:1.26 
guile/guile-core/libguile/continuations.c:1.27
--- guile/guile-core/libguile/continuations.c:1.26      Sat Nov 25 08:58:25 2000
+++ guile/guile-core/libguile/continuations.c   Sun Nov 26 10:27:49 2000
@@ -51,6 +51,7 @@
 #include "libguile/smob.h"
 #include "libguile/ports.h"
 #include "libguile/dynwind.h"
+#include "libguile/values.h"
 
 #ifdef DEBUG_EXTENSIONS
 #include "libguile/debug.h"
@@ -216,11 +217,9 @@
 #define FUNC_NAME "continuation_apply"
 static SCM continuation_apply (SCM cont, SCM args)
 {
-  /* FIXME: support R5RS multiple value continuations.  */
   scm_contregs *continuation = SCM_CONTREGS (cont);
   scm_contregs *rootcont = SCM_CONTREGS (scm_rootcont);
 
-  SCM_ASSERT (scm_ilength (args) == 1, args, SCM_ARGn, FUNC_NAME);
   if (continuation->seq != rootcont->seq
       /* this base comparison isn't needed */
       || continuation->base != rootcont->base)
@@ -231,7 +230,7 @@
   scm_dowinds (continuation->dynenv,
               scm_ilength (scm_dynwinds) - continuation->dynenv);
   
-  scm_dynthrow (cont, SCM_CAR (args));
+  scm_dynthrow (cont, scm_values (args));
   return SCM_UNSPECIFIED; /* not reached */
 }
 #undef FUNC_NAME
Index: guile/guile-core/libguile/init.c
diff -u guile/guile-core/libguile/init.c:1.105 
guile/guile-core/libguile/init.c:1.106
--- guile/guile-core/libguile/init.c:1.105      Sat Nov 25 08:58:25 2000
+++ guile/guile-core/libguile/init.c    Sun Nov 26 10:27:49 2000
@@ -132,6 +132,7 @@
 #include "libguile/tag.h"
 #include "libguile/throw.h"
 #include "libguile/unif.h"
+#include "libguile/values.h"
 #include "libguile/variable.h"
 #include "libguile/vectors.h"
 #include "libguile/version.h"
@@ -491,7 +492,7 @@
   scm_init_subr_table ();
   scm_environments_prehistory (); /* create the root environment */
   scm_init_continuations ();
-  scm_init_root ();
+  scm_init_root ();            /* requires continuations */
 #ifdef USE_THREADS
   scm_init_threads (base);
 #endif
@@ -552,11 +553,12 @@
   scm_init_srcprop ();
 #endif
   scm_init_stackchk ();
-  scm_init_struct ();  /* Requires struct */
-  scm_init_stacks ();
+  scm_init_struct ();
+  scm_init_stacks ();   /* Requires struct */
   scm_init_strports ();
   scm_init_symbols ();
   scm_init_tag ();
+  scm_init_values ();   /* Requires struct */
   scm_init_load ();
   scm_init_objects (); /* Requires struct */
   scm_init_print ();   /* Requires struct */
Index: guile/guile-core/libguile/struct.h
diff -u guile/guile-core/libguile/struct.h:1.33 
guile/guile-core/libguile/struct.h:1.34
--- guile/guile-core/libguile/struct.h:1.33     Wed Aug  9 11:29:39 2000
+++ guile/guile-core/libguile/struct.h  Sun Nov 26 10:27:49 2000
@@ -87,6 +87,8 @@
 
 #define SCM_STRUCT_VTABLE(X)           (SCM_PACK (SCM_STRUCT_VTABLE_DATA (X) 
[scm_vtable_index_vtable]))
 #define SCM_STRUCT_PRINTER(X)          (SCM_PACK (SCM_STRUCT_VTABLE_DATA (X) 
[scm_vtable_index_printer]))
+#define SCM_SET_STRUCT_PRINTER(x, v)\
+   (SCM_STRUCT_VTABLE_DATA (x) [scm_vtable_index_printer] = (v))
 #define SCM_SET_VTABLE_DESTRUCTOR(X, D) (SCM_STRUCT_DATA (X) 
[scm_struct_i_free] = (scm_bits_t) (D))
 /* Efficiency is important in the following macro, since it's used in GC */
 #define SCM_LAYOUT_TAILP(X)            (((X) & 32) == 0) /* R, W or O */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]