[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 19/27: Remove generalized-vectors.[hc]
From: |
Daniel Llorens |
Subject: |
[Guile-commits] 19/27: Remove generalized-vectors.[hc] |
Date: |
Thu, 9 Apr 2020 11:00:09 -0400 (EDT) |
lloda pushed a commit to branch wip-vector-cleanup
in repository guile.
commit 68ae22eb5ec8bf8e6bf81acaca82aa81a916e9c2
Author: Daniel Llorens <address@hidden>
AuthorDate: Thu Feb 6 16:15:47 2020 +0100
Remove generalized-vectors.[hc]
* libguile/arrays.c: Assume the registry of array element types.
* libguile/arrays.h (scm_make_generalized_vector): Last decl from
generalized-vectors.h.
* libguile/generalized-vectors.h:
* libguile/generalized-vectors.c: Remove.
Elsewhere remove references to generalized-vectors.
---
libguile.h | 1 -
libguile/Makefile.am | 4 --
libguile/arrays.c | 80 +++++++++++++++++++++++++++++-
libguile/arrays.h | 2 +
libguile/generalized-vectors.c | 110 -----------------------------------------
libguile/generalized-vectors.h | 35 -------------
libguile/init.c | 2 -
libguile/random.c | 1 -
8 files changed, 80 insertions(+), 155 deletions(-)
diff --git a/libguile.h b/libguile.h
index 2ffa3d5..7879041 100644
--- a/libguile.h
+++ b/libguile.h
@@ -62,7 +62,6 @@ extern "C" {
#include "libguile/frames.h"
#include "libguile/gc.h"
#include "libguile/generalized-arrays.h"
-#include "libguile/generalized-vectors.h"
#include "libguile/goops.h"
#include "libguile/gsubr.h"
#include "libguile/guardians.h"
diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index d4cfec7..8e933a2 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -164,7 +164,6 @@ libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES =
\
gc.c \
gettext.c \
generalized-arrays.c \
- generalized-vectors.c \
goops.c \
gsubr.c \
guardians.c \
@@ -279,7 +278,6 @@ DOT_X_FILES = \
gc.x \
gettext.x \
generalized-arrays.x \
- generalized-vectors.x \
goops.x \
gsubr.x \
guardians.x \
@@ -387,7 +385,6 @@ DOT_DOC_FILES = \
gc.doc \
gettext.doc \
generalized-arrays.doc \
- generalized-vectors.doc \
goops.doc \
gsubr.doc \
guardians.doc \
@@ -635,7 +632,6 @@ modinclude_HEADERS = \
gc-inline.h \
gettext.h \
generalized-arrays.h \
- generalized-vectors.h \
goops.h \
gsubr.h \
guardians.h \
diff --git a/libguile/arrays.c b/libguile/arrays.c
index d5f4f6a..0531f14 100644
--- a/libguile/arrays.c
+++ b/libguile/arrays.c
@@ -39,7 +39,6 @@
#include "feature.h"
#include "fports.h"
#include "generalized-arrays.h"
-#include "generalized-vectors.h"
#include "gsubr.h"
#include "list.h"
#include "modules.h"
@@ -56,7 +55,53 @@
#include "arrays.h"
+
+/* ---------------------- */
+/* Handling of root types */
+/* ---------------------- */
+
+struct scm_t_vector_ctor
+{
+ SCM tag;
+ SCM (*ctor)(SCM, SCM);
+};
+
+#define VECTOR_CTORS_N_STATIC_ALLOC 20
+static struct scm_t_vector_ctor vector_ctors[VECTOR_CTORS_N_STATIC_ALLOC];
+static int num_vector_ctors_registered = 0;
+
+static void
+scm_i_register_vector_constructor (SCM type, SCM (*ctor)(SCM, SCM))
+{
+ if (num_vector_ctors_registered >= VECTOR_CTORS_N_STATIC_ALLOC)
+ /* need to increase VECTOR_CTORS_N_STATIC_ALLOC, buster */
+ abort ();
+ else
+ {
+ vector_ctors[num_vector_ctors_registered].tag = type;
+ vector_ctors[num_vector_ctors_registered].ctor = ctor;
+ num_vector_ctors_registered++;
+ }
+}
+
+SCM_DEFINE (scm_make_generalized_vector, "make-generalized-vector", 2, 1, 0,
+ (SCM type, SCM len, SCM fill),
+ "Make a generalized vector")
+#define FUNC_NAME s_scm_make_generalized_vector
+{
+ int i;
+ for (i = 0; i < num_vector_ctors_registered; i++)
+ if (scm_is_eq (vector_ctors[i].tag, type))
+ return vector_ctors[i].ctor(len, fill);
+ scm_wrong_type_arg_msg (FUNC_NAME, SCM_ARG1, type, "array type");
+}
+#undef FUNC_NAME
+
+/* ------------------- */
+/* Basic array library */
+/* ------------------- */
+
size_t
scm_c_array_rank (SCM array)
{
@@ -954,11 +999,42 @@ scm_i_print_array (SCM array, SCM port, scm_print_state
*pstate)
return d;
}
+
+/* ---------------------- */
+/* Init hook */
+/* ---------------------- */
+
+#define SCM_VECTOR_IMPLEMENTATION(type, ctor) \
+ SCM_SNARF_INIT (scm_i_register_vector_constructor \
+ (scm_i_array_element_types[type], ctor))
+
+SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_SCM, scm_make_vector)
+SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_BIT, scm_make_bitvector)
+SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_CHAR, scm_make_string)
+SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_VU8, scm_make_bytevector)
+
void
scm_init_arrays ()
{
+#define REGISTER(tag, TAG) \
+ scm_i_register_vector_constructor \
+ (scm_i_array_element_types[SCM_ARRAY_ELEMENT_TYPE_##TAG], \
+ scm_make_##tag##vector)
+
+ REGISTER (u8, U8);
+ REGISTER (s8, S8);
+ REGISTER (u16, U16);
+ REGISTER (s16, S16);
+ REGISTER (u32, U32);
+ REGISTER (s32, S32);
+ REGISTER (u64, U64);
+ REGISTER (s64, S64);
+ REGISTER (f32, F32);
+ REGISTER (f64, F64);
+ REGISTER (c32, C32);
+ REGISTER (c64, C64);
+
scm_add_feature ("array");
#include "arrays.x"
-
}
diff --git a/libguile/arrays.h b/libguile/arrays.h
index 7221fdb..f96a019 100644
--- a/libguile/arrays.h
+++ b/libguile/arrays.h
@@ -31,6 +31,8 @@
Also see ....
*/
+/* FIXME Superfluous residue from generalized-vector.h - deprecate */
+SCM_API SCM scm_make_generalized_vector (SCM type, SCM len, SCM fill);
/** Arrays */
diff --git a/libguile/generalized-vectors.c b/libguile/generalized-vectors.c
deleted file mode 100644
index 33fe02d..0000000
--- a/libguile/generalized-vectors.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Copyright 1995-1998,2000-2006,2009-2014,2018
- Free Software Foundation, Inc.
-
- This file is part of Guile.
-
- Guile is free software: you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Guile is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with Guile. If not, see
- <https://www.gnu.org/licenses/>. */
-
-
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "error.h"
-#include "gsubr.h"
-
-#include "generalized-vectors.h"
-#include "array-handle.h"
-#include "bytevectors.h"
-#include "bitvectors.h"
-#include "strings.h"
-#include "vectors.h"
-#include "srfi-4.h"
-
-struct scm_t_vector_ctor
-{
- SCM tag;
- SCM (*ctor)(SCM, SCM);
-};
-
-#define VECTOR_CTORS_N_STATIC_ALLOC 20
-static struct scm_t_vector_ctor vector_ctors[VECTOR_CTORS_N_STATIC_ALLOC];
-static int num_vector_ctors_registered = 0;
-
-static void
-scm_i_register_vector_constructor (SCM type, SCM (*ctor)(SCM, SCM))
-{
- if (num_vector_ctors_registered >= VECTOR_CTORS_N_STATIC_ALLOC)
- /* need to increase VECTOR_CTORS_N_STATIC_ALLOC, buster */
- abort ();
- else
- {
- vector_ctors[num_vector_ctors_registered].tag = type;
- vector_ctors[num_vector_ctors_registered].ctor = ctor;
- num_vector_ctors_registered++;
- }
-}
-
-SCM_DEFINE (scm_make_generalized_vector, "make-generalized-vector", 2, 1, 0,
- (SCM type, SCM len, SCM fill),
- "Make a generalized vector")
-#define FUNC_NAME s_scm_make_generalized_vector
-{
- int i;
- for (i = 0; i < num_vector_ctors_registered; i++)
- if (scm_is_eq (vector_ctors[i].tag, type))
- return vector_ctors[i].ctor(len, fill);
- scm_wrong_type_arg_msg (FUNC_NAME, SCM_ARG1, type, "array type");
-}
-#undef FUNC_NAME
-
-#define SCM_VECTOR_IMPLEMENTATION(type, ctor) \
- SCM_SNARF_INIT (scm_i_register_vector_constructor \
- (scm_i_array_element_types[type], ctor))
-
-
-SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_SCM, scm_make_vector)
-SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_BIT, scm_make_bitvector)
-SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_CHAR, scm_make_string)
-
-void
-scm_init_generalized_vectors ()
-{
- scm_i_register_vector_constructor
- (scm_i_array_element_types[SCM_ARRAY_ELEMENT_TYPE_VU8],
- scm_make_bytevector);
-
-#define REGISTER(tag, TAG) \
- scm_i_register_vector_constructor \
- (scm_i_array_element_types[SCM_ARRAY_ELEMENT_TYPE_##TAG], \
- scm_make_##tag##vector)
-
- REGISTER (u8, U8);
- REGISTER (s8, S8);
- REGISTER (u16, U16);
- REGISTER (s16, S16);
- REGISTER (u32, U32);
- REGISTER (s32, S32);
- REGISTER (u64, U64);
- REGISTER (s64, S64);
- REGISTER (f32, F32);
- REGISTER (f64, F64);
- REGISTER (c32, C32);
- REGISTER (c64, C64);
-
-#include "generalized-vectors.x"
-}
diff --git a/libguile/generalized-vectors.h b/libguile/generalized-vectors.h
deleted file mode 100644
index 4d347d3..0000000
--- a/libguile/generalized-vectors.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef SCM_GENERALIZED_VECTORS_H
-#define SCM_GENERALIZED_VECTORS_H
-
-/* Copyright 1995-1997,1999-2001,2004,2006,2008-2009,2013,2018
- Free Software Foundation, Inc.
-
- This file is part of Guile.
-
- Guile is free software: you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Guile is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with Guile. If not, see
- <https://www.gnu.org/licenses/>. */
-
-
-
-#include "libguile/snarf.h"
-
-
-
-/* Generalized vectors */
-
-SCM_API SCM scm_make_generalized_vector (SCM type, SCM len, SCM fill);
-
-SCM_INTERNAL void scm_init_generalized_vectors (void);
-
-#endif /* SCM_GENERALIZED_VECTORS_H */
diff --git a/libguile/init.c b/libguile/init.c
index 2a9f963..d248ba7 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -72,7 +72,6 @@
#include "frames.h"
#include "gc.h"
#include "generalized-arrays.h"
-#include "generalized-vectors.h"
#include "gettext.h"
#include "goops.h"
#include "gsubr.h"
@@ -442,7 +441,6 @@ scm_i_init_guile (void *base)
scm_init_stackchk ();
scm_init_generalized_arrays ();
- scm_init_generalized_vectors ();
scm_init_vectors (); /* Requires array-handle, */
scm_init_uniform ();
scm_init_bitvectors (); /* Requires smob_prehistory, array-handle */
diff --git a/libguile/random.c b/libguile/random.c
index 6fd567c..ed234f8 100644
--- a/libguile/random.c
+++ b/libguile/random.c
@@ -35,7 +35,6 @@
#include "arrays.h"
#include "feature.h"
#include "generalized-arrays.h"
-#include "generalized-vectors.h"
#include "gsubr.h"
#include "list.h"
#include "modules.h"
- [Guile-commits] 04/27: Remove the unused argument from scm_array_p, (continued)
- [Guile-commits] 04/27: Remove the unused argument from scm_array_p, Daniel Llorens, 2020/04/09
- [Guile-commits] 06/27: Simplify interfaces to scm_vector_elements and scm_vector_writable_elements, Daniel Llorens, 2020/04/09
- [Guile-commits] 08/27: Fix doc for last bitvector patch, Daniel Llorens, 2020/04/09
- [Guile-commits] 10/27: Add lenp parameter back to scm_vector_(writable_)elements, Daniel Llorens, 2020/04/09
- [Guile-commits] 07/27: Simplify interfaces to scm_bitvector_elements and scm_bitvector_writable_elements, Daniel Llorens, 2020/04/09
- [Guile-commits] 09/27: Simplify interfaces to scm_TYPEvector_(writable_)elements, Daniel Llorens, 2020/04/09
- [Guile-commits] 11/27: Add lenp parameter back to scm_bitvector_(writable_)elements, Daniel Llorens, 2020/04/09
- [Guile-commits] 14/27: Golf in srfi-4.h, Daniel Llorens, 2020/04/09
- [Guile-commits] 16/27: Pull generalized-vectors from under bitvector/string/vector, Daniel Llorens, 2020/04/09
- [Guile-commits] 17/27: Pull generalized-vectors from under typed vectors, Daniel Llorens, 2020/04/09
- [Guile-commits] 19/27: Remove generalized-vectors.[hc],
Daniel Llorens <=
- [Guile-commits] 05/27: Simple vectors are just vectors, Daniel Llorens, 2020/04/09
- [Guile-commits] 15/27: Rewrite vector-copy! using memmove, Daniel Llorens, 2020/04/09
- [Guile-commits] 12/27: Remove generalized vector support for vector-move-right!, vector-move-left!, Daniel Llorens, 2020/04/09
- [Guile-commits] 22/27: Remove scm_from_contiguous_typed_array, Daniel Llorens, 2020/04/09
- [Guile-commits] 13/27: Move bitvector functions using array_handle to libguile/array-handle.[ch], Daniel Llorens, 2020/04/09
- [Guile-commits] 18/27: Pull generalized-vectors from under bytevectors, Daniel Llorens, 2020/04/09
- [Guile-commits] 25/27: Remove superfluous type check in bitvector->list, Daniel Llorens, 2020/04/09
- [Guile-commits] 26/27: Simplify vector constructor, Daniel Llorens, 2020/04/09
- [Guile-commits] 23/27: Remove 'contiguous' flag in arrays, Daniel Llorens, 2020/04/09
- [Guile-commits] 24/27: Move uniform-array->bytevector from (rnrs bytevectors) to core, Daniel Llorens, 2020/04/09