]> git.donarmstrong.com Git - lilypond.git/blob - guile18/libguile/boolean.c
New upstream version 2.19.65
[lilypond.git] / guile18 / libguile / boolean.c
1 /*      Copyright (C) 1995, 1996, 2000, 2001, 2006, 2008 Free Software Foundation, Inc.
2  * 
3  * This library is free software; you can redistribute it and/or
4  * modify it under the terms of the GNU Lesser General Public
5  * License as published by the Free Software Foundation; either
6  * version 2.1 of the License, or (at your option) any later version.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11  * Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public
14  * License along with this library; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16  */
17
18
19 \f
20 #ifdef HAVE_CONFIG_H
21 # include <config.h>
22 #endif
23
24 #include "libguile/_scm.h"
25
26 #include "libguile/validate.h"
27 #include "libguile/boolean.h"
28 #include "libguile/lang.h"
29 #include "libguile/tags.h"
30
31 \f
32
33
34 SCM_DEFINE (scm_not, "not", 1, 0, 0, 
35             (SCM x),
36             "Return @code{#t} iff @var{x} is @code{#f}, else return @code{#f}.")
37 #define FUNC_NAME s_scm_not
38 {
39   return scm_from_bool (scm_is_false (x) || SCM_NILP (x));
40 }
41 #undef FUNC_NAME
42
43
44 SCM_DEFINE (scm_boolean_p, "boolean?", 1, 0, 0, 
45            (SCM obj),
46             "Return @code{#t} iff @var{obj} is either @code{#t} or @code{#f}.")
47 #define FUNC_NAME s_scm_boolean_p
48 {
49   return scm_from_bool (scm_is_bool (obj) || SCM_NILP (obj));
50 }
51 #undef FUNC_NAME
52
53 int
54 scm_is_bool (SCM x)
55 {
56   return scm_is_eq (x, SCM_BOOL_F) || scm_is_eq (x, SCM_BOOL_T);
57 }
58
59 int
60 scm_to_bool (SCM x)
61 {
62   if (scm_is_eq (x, SCM_BOOL_F))
63     return 0;
64   else if (scm_is_eq (x, SCM_BOOL_T))
65     return 1;
66   else    
67     scm_wrong_type_arg (NULL, 0, x);
68 }
69
70 void
71 scm_init_boolean ()
72 {
73 #include "libguile/boolean.x"
74 }
75
76
77 /*
78   Local Variables:
79   c-file-style: "gnu"
80   End:
81 */