1 /* Copyright (C) 1995,1996,1997, 2000, 2001, 2004, 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 #ifdef HAVE_CONFIG_H
19 # include <config.h>
20 #endif
21
22
23 /* list manipulation */
24
25 #include "libguile/gh.h"
26
27 #if SCM_ENABLE_DEPRECATED
28
29 /* returns the length of a list */
30 unsigned long
gh_length(SCM l)31 gh_length (SCM l)
32 {
33 return gh_scm2ulong (scm_length (l));
34 }
35
36 /* list operations */
37
38 /* gh_list(SCM elt, ...) is implemented as a macro in gh.h. */
39
40 /* gh_append() takes a args, which is a list of lists, and appends
41 them all together into a single list, which is returned. This is
42 equivalent to the Scheme procedure (append list1 list2 ...) */
43 SCM
gh_append(SCM args)44 gh_append (SCM args)
45 {
46 return scm_append (args);
47 }
48
49 SCM
gh_append2(SCM l1,SCM l2)50 gh_append2 (SCM l1, SCM l2)
51 {
52 return scm_append (scm_list_2 (l1, l2));
53 }
54
55 SCM
gh_append3(SCM l1,SCM l2,SCM l3)56 gh_append3(SCM l1, SCM l2, SCM l3)
57 {
58 return scm_append (scm_list_3 (l1, l2, l3));
59 }
60
61 SCM
gh_append4(SCM l1,SCM l2,SCM l3,SCM l4)62 gh_append4 (SCM l1, SCM l2, SCM l3, SCM l4)
63 {
64 return scm_append (scm_list_4 (l1, l2, l3, l4));
65 }
66
67 /* gh_reverse() is defined as a macro in gh.h */
68 /* gh_list_tail() is defined as a macro in gh.h */
69 /* gh_list_ref() is defined as a macro in gh.h */
70 /* gh_memq() is defined as a macro in gh.h */
71 /* gh_memv() is defined as a macro in gh.h */
72 /* gh_member() is defined as a macro in gh.h */
73 /* gh_assq() is defined as a macro in gh.h */
74 /* gh_assv() is defined as a macro in gh.h */
75 /* gh_assoc() is defined as a macro in gh.h */
76
77 /* analogous to the Scheme cons operator */
78 SCM
gh_cons(SCM x,SCM y)79 gh_cons (SCM x, SCM y)
80 {
81 return scm_cons (x, y);
82 }
83
84 /* analogous to the Scheme car operator */
85 SCM
gh_car(SCM x)86 gh_car (SCM x)
87 {
88 return scm_car (x);
89 }
90
91 /* analogous to the Scheme cdr operator */
92 SCM
gh_cdr(SCM x)93 gh_cdr (SCM x)
94 {
95 return scm_cdr (x);
96 }
97
98 /* now for the multiple car/cdr utility procedures */
99 SCM
gh_caar(SCM x)100 gh_caar (SCM x)
101 {
102 return scm_caar (x);
103 }
104 SCM
gh_cadr(SCM x)105 gh_cadr (SCM x)
106 {
107 return scm_cadr (x);
108 }
109 SCM
gh_cdar(SCM x)110 gh_cdar (SCM x)
111 {
112 return scm_cdar (x);
113 }
114 SCM
gh_cddr(SCM x)115 gh_cddr (SCM x)
116 {
117 return scm_cddr (x);
118 }
119
120 SCM
gh_caaar(SCM x)121 gh_caaar (SCM x)
122 {
123 return scm_caaar (x);
124 }
125 SCM
gh_caadr(SCM x)126 gh_caadr (SCM x)
127 {
128 return scm_caadr (x);
129 }
130 SCM
gh_cadar(SCM x)131 gh_cadar (SCM x)
132 {
133 return scm_cadar (x);
134 }
135 SCM
gh_caddr(SCM x)136 gh_caddr (SCM x)
137 {
138 return scm_caddr (x);
139 }
140 SCM
gh_cdaar(SCM x)141 gh_cdaar (SCM x)
142 {
143 return scm_cdaar (x);
144 }
145 SCM
gh_cdadr(SCM x)146 gh_cdadr (SCM x)
147 {
148 return scm_cdadr (x);
149 }
150 SCM
gh_cddar(SCM x)151 gh_cddar (SCM x)
152 {
153 return scm_cddar (x);
154 }
155 SCM
gh_cdddr(SCM x)156 gh_cdddr (SCM x)
157 {
158 return scm_cdddr (x);
159 }
160
161 /* equivalent to (set-car! pair value) */
162 SCM
gh_set_car_x(SCM pair,SCM value)163 gh_set_car_x(SCM pair, SCM value)
164 {
165 return scm_set_car_x(pair, value);
166 }
167
168 /* equivalent to (set-cdr! pair value) */
169 SCM
gh_set_cdr_x(SCM pair,SCM value)170 gh_set_cdr_x(SCM pair, SCM value)
171 {
172 return scm_set_cdr_x(pair, value);
173 }
174
175 #endif /* SCM_ENABLE_DEPRECATED */
176
177 /*
178 Local Variables:
179 c-file-style: "gnu"
180 End:
181 */
182