#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
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);
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;
}
"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);
}
"@code{#f}.")
#define FUNC_NAME s_scm_fluid_ref
{
- int n;
+ scm_bits_t n;
SCM_VALIDATE_FLUID (1, fluid);
"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);
"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);
}
#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 ()
#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"