* coop.c (coop_finish): New function. Called at exit.
[bpt/guile.git] / libguile / async.h
index 6f94589..b1be782 100644 (file)
@@ -2,7 +2,7 @@
 
 #ifndef ASYNCH
 #define ASYNCH
-/*     Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 96, 97, 98, 2000 Free Software Foundation, Inc.
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * If you write modifications of your own for GUILE, it is your choice
  * whether to permit this exception to apply to your modifications.
  * If you do not wish that, delete this exception notice.  */
+
+/* Software engineering face-lift by Greg J. Badros, 11-Dec-1999,
+   gjb@cs.washington.edu, http://www.cs.washington.edu/homes/gjb */
 \f
 
 #include "libguile/__scm.h"
 
 
 \f
-#define SCM_ASYNCP(X)  (scm_tc16_async == SCM_GCTYP16 (X))
-#define SCM_ASYNC(X)   ((struct scm_async *)SCM_CDR (X))
+#define SCM_ASYNCP(X)  (SCM_NIMP(X) && (scm_tc16_async == SCM_GCTYP16 (X)))
+#define SCM_ASYNC(X)   ((struct scm_async *) &SCM_CDR (X))
 
 struct scm_async
 {
-  int got_it;                  /* needs to be delivered? */
+  scm_bits_t got_it;           /* needs to be delivered? */
   SCM thunk;                   /* the handler. */
 };
 
@@ -63,18 +66,25 @@ extern unsigned int scm_mask_ints;
 extern SCM scm_gc_async;
 \f
 
-extern void scm_async_click SCM_P ((void));
-extern void scm_switch SCM_P ((void));
-extern SCM scm_async SCM_P ((SCM thunk));
-extern SCM scm_system_async SCM_P ((SCM thunk));
-extern SCM scm_async_mark SCM_P ((SCM a));
-extern SCM scm_system_async_mark SCM_P ((SCM a));
-extern SCM scm_run_asyncs SCM_P ((SCM list_of_a));
-extern SCM scm_noop SCM_P ((SCM args));
-extern SCM scm_set_tick_rate SCM_P ((SCM n));
-extern SCM scm_set_switch_rate SCM_P ((SCM n));
-extern SCM scm_unmask_signals SCM_P ((void));
-extern SCM scm_mask_signals SCM_P ((void));
-extern void scm_init_async SCM_P ((void));
+extern int scm_asyncs_pending (void);
+extern void scm_async_click (void);
+extern void scm_switch (void);
+extern SCM scm_async (SCM thunk);
+extern SCM scm_system_async (SCM thunk);
+extern SCM scm_async_mark (SCM a);
+extern SCM scm_system_async_mark (SCM a);
+extern SCM scm_run_asyncs (SCM list_of_a);
+extern SCM scm_noop (SCM args);
+extern SCM scm_set_tick_rate (SCM n);
+extern SCM scm_set_switch_rate (SCM n);
+extern SCM scm_unmask_signals (void);
+extern SCM scm_mask_signals (void);
+extern void scm_init_async (void);
 
 #endif  /* ASYNCH */
+
+/*
+  Local Variables:
+  c-file-style: "gnu"
+  End:
+*/