New files.
[bpt/guile.git] / libguile / gh_list.c
index 6442c57..1330fc6 100644 (file)
@@ -1,4 +1,4 @@
-/*      Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+/*      Copyright (C) 1995,1996,1997, 2000, 2001 Free Software Foundation, Inc.
 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 /* list manipulation */
 
-#include <stdio.h>
-
-#include <gh.h>
+#include "libguile/gh.h"
 
 /* returns the length of a list */
 unsigned long 
-gh_list_length (SCM l)
+gh_length (SCM l)
 {
-  return gh_scm2ulong (scm_list_length (l));
+  return gh_scm2ulong (scm_length (l));
 }
 
 /* list operations */
 
+/* gh_list(SCM elt, ...) is implemented as a macro in gh.h. */
+
+/* gh_append() takes a args, which is a list of lists, and appends
+   them all together into a single list, which is returned.  This is
+   equivalent to the Scheme procedure (append list1 list2 ...) */
+SCM
+gh_append (SCM args)
+{
+  return scm_append (args);
+}
+
+SCM
+gh_append2 (SCM l1, SCM l2)
+{
+  return scm_append (scm_list_2 (l1, l2));
+}
+
+SCM
+gh_append3(SCM l1, SCM l2, SCM l3)
+{
+  return scm_append (scm_list_3 (l1, l2, l3));
+}
+
+SCM
+gh_append4 (SCM l1, SCM l2, SCM l3, SCM l4)
+{
+  return scm_append (scm_list_4 (l1, l2, l3, l4));
+}
+
+/* gh_reverse() is defined as a macro in gh.h */
+/* gh_list_tail() is defined as a macro in gh.h */
+/* gh_list_ref() is defined as a macro in gh.h */
+/* gh_memq() is defined as a macro in gh.h */
+/* gh_memv() is defined as a macro in gh.h */
+/* gh_member() is defined as a macro in gh.h */
+/* gh_assq() is defined as a macro in gh.h */
+/* gh_assv() is defined as a macro in gh.h */
+/* gh_assoc() is defined as a macro in gh.h */
+
 /* analogous to the Scheme cons operator */
 SCM 
 gh_cons (SCM x, SCM y)
@@ -62,8 +99,6 @@ gh_cons (SCM x, SCM y)
   return scm_cons (x, y);
 }
 
-/* gh_list(SCM elt, ...) is implemented as a macro in gh.h. */
-
 /* analogous to the Scheme car operator */
 SCM 
 gh_car (SCM x)
@@ -140,3 +175,23 @@ gh_cdddr (SCM x)
 {
   return SCM_CDDDR (x);
 }
+
+/* equivalent to (set-car! pair value) */
+SCM
+gh_set_car_x(SCM pair, SCM value)
+{
+  return scm_set_car_x(pair, value);
+}
+
+/* equivalent to (set-cdr! pair value) */
+SCM
+gh_set_cdr_x(SCM pair, SCM value)
+{
+  return scm_set_cdr_x(pair, value);
+}
+
+/*
+  Local Variables:
+  c-file-style: "gnu"
+  End:
+*/