* validate.h
[bpt/guile.git] / libguile / fluids.c
index a247098..aedb27e 100644 (file)
 #include "libguile/alist.h"
 #include "libguile/eval.h"
 #include "libguile/ports.h"
+#include "libguile/deprecation.h"
 
 #define INITIAL_FLUIDS 10
 #include "libguile/validate.h"
 
-static volatile int n_fluids;
+static volatile scm_bits_t n_fluids;
 scm_bits_t scm_tc16_fluid;
 
 SCM
@@ -68,7 +69,7 @@ static void
 grow_fluids (scm_root_state *root_state, int new_length)
 {
   SCM old_fluids, new_fluids;
-  int old_length, i;
+  scm_bits_t old_length, i;
 
   old_fluids = root_state->fluids;
   old_length = SCM_VECTOR_LENGTH (old_fluids);
@@ -103,17 +104,13 @@ fluid_print (SCM exp, SCM port, scm_print_state *pstate)
   return 1;
 }
 
-static int
+static scm_bits_t
 next_fluid_num ()
 {
-  int n;
-#ifdef USE_THREADS
-  SCM_THREAD_CRITICAL_SECTION_START;
-#endif
+  scm_bits_t n;
+  SCM_CRITICAL_SECTION_START;
   n = n_fluids++;
-#ifdef USE_THREADS
-  SCM_THREAD_CRITICAL_SECTION_END;
-#endif
+  SCM_CRITICAL_SECTION_END;
   return n;
 }
 
@@ -128,9 +125,8 @@ SCM_DEFINE (scm_make_fluid, "make-fluid", 0, 0, 0,
            "in its own dynamic root, you can use fluids for thread local storage.")
 #define FUNC_NAME s_scm_make_fluid
 {
-  int n;
+  scm_bits_t n;
 
-  SCM_DEFER_INTS;
   n = next_fluid_num ();
   SCM_RETURN_NEWSMOB (scm_tc16_fluid, n);
 }
@@ -153,7 +149,7 @@ SCM_DEFINE (scm_fluid_ref, "fluid-ref", 1, 0, 0,
            "@code{#f}.")
 #define FUNC_NAME s_scm_fluid_ref
 {
-  int n;
+  scm_bits_t n;
 
   SCM_VALIDATE_FLUID (1, fluid);
 
@@ -170,7 +166,7 @@ SCM_DEFINE (scm_fluid_set_x, "fluid-set!", 2, 0, 0,
            "Set the value associated with @var{fluid} in the current dynamic root.")
 #define FUNC_NAME s_scm_fluid_set_x
 {
-  int n;
+  scm_bits_t n;
 
   SCM_VALIDATE_FLUID (1, fluid);
   n = SCM_FLUID_NUM (fluid);
@@ -229,16 +225,16 @@ SCM_DEFINE (scm_with_fluids, "with-fluids*", 3, 0, 0,
            "one after another.  @var{thunk} must be a procedure with no argument.")
 #define FUNC_NAME s_scm_with_fluids
 {
-  return scm_internal_with_fluids (fluids, values, apply_thunk, (void *) SCM_UNPACK (thunk));
+  return scm_c_with_fluids (fluids, values, apply_thunk, (void *) SCM_UNPACK (thunk));
 }
 #undef FUNC_NAME
 
 SCM
-scm_internal_with_fluids (SCM fluids, SCM values, SCM (*cproc) (), void *cdata)
-#define FUNC_NAME "scm_internal_with_fluids"
+scm_c_with_fluids (SCM fluids, SCM values, SCM (*cproc) (), void *cdata)
+#define FUNC_NAME "scm_c_with_fluids"
 {
   SCM ans;
-  int flen, vlen;
+  scm_bits_t flen, vlen;
 
   SCM_VALIDATE_LIST_COPYLEN (1, fluids, flen);
   SCM_VALIDATE_LIST_COPYLEN (2, values, vlen);
@@ -254,7 +250,14 @@ scm_internal_with_fluids (SCM fluids, SCM values, SCM (*cproc) (), void *cdata)
 }
 #undef FUNC_NAME
 
-
+SCM
+scm_c_with_fluid (SCM fluid, SCM value, SCM (*cproc) (), void *cdata)
+#define FUNC_NAME "scm_c_with_fluid"
+{
+  return scm_c_with_fluids (SCM_LIST1 (fluid), SCM_LIST1 (value),
+                           cproc, cdata);
+}
+#undef FUNC_NAME
 
 void
 scm_init_fluids ()
@@ -266,6 +269,19 @@ scm_init_fluids ()
 #endif
 }
 
+#if SCM_DEBUG_DEPRECATED == 0
+
+SCM
+scm_internal_with_fluids (SCM fluids, SCM values, SCM (*cproc) (), void *cdata)
+{
+  scm_c_issue_deprecation_warning ("`scm_internal_with_fluids' is deprecated. "
+                                  "Use `scm_c_with_fluids' instead.");
+
+  return scm_c_with_fluids (fluids, values, cproc, cdata);
+}
+
+#endif
+
 /*
   Local Variables:
   c-file-style: "gnu"