summaryrefslogtreecommitdiff
path: root/libguile/deprecated.h
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/deprecated.h')
-rw-r--r--libguile/deprecated.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/libguile/deprecated.h b/libguile/deprecated.h
index 039ec540f..7f71bb4d7 100644
--- a/libguile/deprecated.h
+++ b/libguile/deprecated.h
@@ -325,6 +325,78 @@ SCM_API SCM scm_gentemp (SCM prefix, SCM obarray);
SCM_API SCM SCM_MAKINUM (scm_t_signed_bits val);
+/* Users shouldn't know about INUMs.
+ */
+
+#define SCM_VALIDATE_INUM(pos, k) SCM_MAKE_VALIDATE_MSG (pos, k, INUMP, "exact integer")
+
+#define SCM_VALIDATE_INUM_COPY(pos, k, cvar) \
+ do { \
+ SCM_ASSERT (SCM_INUMP (k), k, pos, FUNC_NAME); \
+ cvar = SCM_INUM (k); \
+ } while (0)
+
+#define SCM_VALIDATE_BIGINT(pos, k) SCM_MAKE_VALIDATE_MSG (pos, k, BIGP, "bignum")
+
+#define SCM_VALIDATE_INUM_MIN(pos, k, min) \
+ do { \
+ SCM_ASSERT (SCM_INUMP(k), k, pos, FUNC_NAME); \
+ SCM_ASSERT_RANGE (pos, k, (SCM_INUM (k) >= min)); \
+ } while (0)
+
+#define SCM_VALIDATE_INUM_MIN_COPY(pos, k, min, cvar) \
+ do { \
+ SCM_ASSERT (SCM_INUMP (k), k, pos, FUNC_NAME); \
+ SCM_ASSERT_RANGE (pos, k, (SCM_INUM (k) >= min)); \
+ cvar = SCM_INUM (k); \
+ } while (0)
+
+#define SCM_VALIDATE_INUM_MIN_DEF_COPY(pos, k, min, default, cvar) \
+ do { \
+ if (SCM_UNBNDP (k)) \
+ k = SCM_I_MAKINUM (default); \
+ SCM_ASSERT (SCM_INUMP (k), k, pos, FUNC_NAME); \
+ SCM_ASSERT_RANGE (pos, k, (SCM_INUM (k) >= min)); \
+ cvar = SCM_INUM (k); \
+ } while (0)
+
+#define SCM_VALIDATE_INUM_DEF(pos, k, default) \
+ do { \
+ if (SCM_UNBNDP (k)) \
+ k = SCM_I_MAKINUM (default); \
+ else SCM_ASSERT (SCM_INUMP (k), k, pos, FUNC_NAME); \
+ } while (0)
+
+#define SCM_VALIDATE_INUM_DEF_COPY(pos, k, default, cvar) \
+ do { \
+ if (SCM_UNBNDP (k)) \
+ { \
+ k = SCM_I_MAKINUM (default); \
+ cvar = default; \
+ } \
+ else \
+ { \
+ SCM_ASSERT (SCM_INUMP (k), k, pos, FUNC_NAME); \
+ cvar = SCM_INUM (k); \
+ } \
+ } while (0)
+
+/* [low, high) */
+#define SCM_VALIDATE_INUM_RANGE(pos, k, low, high) \
+ do { SCM_ASSERT(SCM_INUMP(k), k, pos, FUNC_NAME); \
+ SCM_ASSERT_RANGE(pos, k, \
+ (SCM_INUM (k) >= low && \
+ SCM_INUM (k) < high)); \
+ } while (0)
+
+#define SCM_VALIDATE_INUM_RANGE_COPY(pos, k, low, high, cvar) \
+ do { \
+ SCM_ASSERT (SCM_INUMP (k), k, pos, FUNC_NAME); \
+ SCM_ASSERT_RANGE (pos, k, low <= SCM_INUM (k) && SCM_INUM (k) < high); \
+ cvar = SCM_INUM (k); \
+ } while (0)
+
+
void scm_i_init_deprecated (void);
#endif