diff options
author | Andy Wingo <wingo@pobox.com> | 2018-06-17 22:49:59 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-06-17 22:49:59 +0200 |
commit | be18b507735ccb6006dcd9a58cba7119b43b7d7c (patch) | |
tree | e0cb9baae5d60a5d4ead44d1b57c2a66826c1835 | |
parent | eb5e1b8d5f9cbe2313a04959643b4ee1b0464be8 (diff) | |
download | guile-be18b507735ccb6006dcd9a58cba7119b43b7d7c.tar.gz |
Move pair, null, nil, and boolean validators out of validate.h
* libguile/validate.h:
* libguile/boolean.h (SCM_VALIDATE_BOOL, SCM_VALIDATE_BOOL_COPY):
* libguile/pairs.h (SCM_VALIDATE_NULL, SCM_VALIDATE_NULL_OR_NIL):
(SCM_VALIDATE_CONS, SCM_VALIDATE_MUTABLE_PAIR)
(SCM_VALIDATE_NULLORCONS): Move these macros.
-rw-r--r-- | libguile/boolean.h | 21 | ||||
-rw-r--r-- | libguile/pairs.h | 38 | ||||
-rw-r--r-- | libguile/validate.h | 30 |
3 files changed, 51 insertions, 38 deletions
diff --git a/libguile/boolean.h b/libguile/boolean.h index df72728ef..dca9a56bd 100644 --- a/libguile/boolean.h +++ b/libguile/boolean.h @@ -3,7 +3,8 @@ #ifndef SCM_BOOLEAN_H #define SCM_BOOLEAN_H -/* Copyright (C) 1995,1996,2000, 2006, 2008, 2009, 2010, 2013 Free Software Foundation, Inc. +/* Copyright (C) 1995-1996,2000,2006,2008-2010,2013,2018 + * Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -122,12 +123,30 @@ SCM_API int scm_to_bool (SCM x); #define scm_is_lisp_false(x) \ (SCM_MATCHES_BITS_IN_COMMON ((x), SCM_BOOL_F, SCM_EOL)) + SCM_API SCM scm_not (SCM x); SCM_API SCM scm_boolean_p (SCM obj); SCM_API SCM scm_nil_p (SCM obj); + + + +#define SCM_VALIDATE_BOOL(pos, flag) \ + do { \ + SCM_ASSERT_TYPE (scm_is_bool (flag), flag, pos, FUNC_NAME, "boolean"); \ + } while (0) + +#define SCM_VALIDATE_BOOL_COPY(pos, flag, cvar) \ + do { \ + SCM_ASSERT (scm_is_bool (flag), flag, pos, FUNC_NAME); \ + cvar = scm_to_bool (flag); \ + } while (0) + + + + SCM_INTERNAL void scm_init_boolean (void); #endif /* SCM_BOOLEAN_H */ diff --git a/libguile/pairs.h b/libguile/pairs.h index cc042ea2a..148f9ad1b 100644 --- a/libguile/pairs.h +++ b/libguile/pairs.h @@ -29,14 +29,8 @@ #include "libguile/error.h" #include "libguile/gc.h" - -#if (SCM_DEBUG_PAIR_ACCESSES == 1) -# define SCM_VALIDATE_PAIR(cell, expr) \ - ((!scm_is_pair (cell) ? scm_error_pair_access (cell), 0 : 0), (expr)) -#else -# define SCM_VALIDATE_PAIR(cell, expr) (expr) -#endif + /* * Use scm_is_null_and_not_nil if it's important (for correctness) @@ -113,6 +107,36 @@ #define SCM_CADDDR(OBJ) SCM_CAR (SCM_CDR (SCM_CDR (SCM_CDR (OBJ)))) #define SCM_CDDDDR(OBJ) SCM_CDR (SCM_CDR (SCM_CDR (SCM_CDR (OBJ)))) + + + +#define SCM_VALIDATE_NULL(pos, scm) \ + SCM_I_MAKE_VALIDATE_MSG2 (pos, scm, scm_is_null, "empty list") + +#define SCM_VALIDATE_NULL_OR_NIL(pos, scm) \ + SCM_MAKE_VALIDATE_MSG (pos, scm, NULL_OR_NIL_P, "empty list") + +#define SCM_VALIDATE_CONS(pos, scm) \ + SCM_I_MAKE_VALIDATE_MSG2 (pos, scm, scm_is_pair, "pair") + +#if (SCM_DEBUG_PAIR_ACCESSES == 1) +# define SCM_VALIDATE_PAIR(cell, expr) \ + ((!scm_is_pair (cell) ? scm_error_pair_access (cell), 0 : 0), (expr)) +#else +# define SCM_VALIDATE_PAIR(cell, expr) (expr) +#endif + +#ifdef BUILDING_LIBGUILE +#define SCM_VALIDATE_MUTABLE_PAIR(pos, scm) \ + SCM_I_MAKE_VALIDATE_MSG2 (pos, scm, scm_is_mutable_pair, "mutable pair") +#endif /* BUILDING_LIBGUILE */ + +#define SCM_VALIDATE_NULLORCONS(pos, env) \ + do { \ + SCM_ASSERT (scm_is_null (env) || scm_is_pair (env), env, pos, FUNC_NAME); \ + } while (0) + + #if (SCM_DEBUG_PAIR_ACCESSES == 1) diff --git a/libguile/validate.h b/libguile/validate.h index 386a21932..dcbd1abee 100644 --- a/libguile/validate.h +++ b/libguile/validate.h @@ -31,17 +31,6 @@ -#define SCM_VALIDATE_BOOL(pos, flag) \ - do { \ - SCM_ASSERT_TYPE (scm_is_bool (flag), flag, pos, FUNC_NAME, "boolean"); \ - } while (0) - -#define SCM_VALIDATE_BOOL_COPY(pos, flag, cvar) \ - do { \ - SCM_ASSERT (scm_is_bool (flag), flag, pos, FUNC_NAME); \ - cvar = scm_to_bool (flag); \ - } while (0) - #define SCM_VALIDATE_BYTEVECTOR(_pos, _obj) \ SCM_ASSERT_TYPE (SCM_BYTEVECTOR_P (_obj), (_obj), (_pos), \ FUNC_NAME, "bytevector") @@ -59,20 +48,6 @@ SCM_ASSERT_TYPE (scm_is_string (str), str, pos, FUNC_NAME, "string"); \ } while (0) -#define SCM_VALIDATE_NULL(pos, scm) \ - SCM_I_MAKE_VALIDATE_MSG2 (pos, scm, scm_is_null, "empty list") - -#define SCM_VALIDATE_NULL_OR_NIL(pos, scm) \ - SCM_MAKE_VALIDATE_MSG (pos, scm, NULL_OR_NIL_P, "empty list") - -#define SCM_VALIDATE_CONS(pos, scm) \ - SCM_I_MAKE_VALIDATE_MSG2 (pos, scm, scm_is_pair, "pair") - -#ifdef BUILDING_LIBGUILE -#define SCM_VALIDATE_MUTABLE_PAIR(pos, scm) \ - SCM_I_MAKE_VALIDATE_MSG2 (pos, scm, scm_is_mutable_pair, "mutable pair") -#endif /* BUILDING_LIBGUILE */ - #define SCM_VALIDATE_ALISTCELL(pos, alist) \ do { \ SCM_ASSERT (scm_is_pair (alist) && scm_is_pair (SCM_CAR (alist)), \ @@ -122,11 +97,6 @@ SCM_ASSERT (scm_is_true (scm_procedure_p (proc)), proc, pos, FUNC_NAME); \ } while (0) -#define SCM_VALIDATE_NULLORCONS(pos, env) \ - do { \ - SCM_ASSERT (scm_is_null (env) || scm_is_pair (env), env, pos, FUNC_NAME); \ - } while (0) - #define SCM_VALIDATE_HOOK(pos, a) SCM_MAKE_VALIDATE_MSG (pos, a, HOOKP, "hook") #define SCM_VALIDATE_RGXP(pos, a) SCM_MAKE_VALIDATE_MSG (pos, a, RGXP, "regexp") |