summaryrefslogtreecommitdiff
path: root/libguile/srfi-4.c
diff options
context:
space:
mode:
authorDaniel Llorens <lloda@sarc.name>2021-12-06 13:38:37 +0100
committerDaniel Llorens <lloda@sarc.name>2021-12-06 14:00:03 +0100
commit5759e37181ae648cc861656b6c75982851ba93fa (patch)
tree97e66e5402c614e6cdde5937e22abeb53d8301e1 /libguile/srfi-4.c
parent6af3362b059bb132231354ccca7f15c781f50f48 (diff)
downloadguile-5759e37181ae648cc861656b6c75982851ba93fa.tar.gz
New function srfi-4-vector-type-size in (srfi srfi-4 gnu)
This patch removes the undocumented function make-srfi-4-vector from (guile). That function is still exported from (srfi srfi-4 gnu). * libguile/srfi-4.h (scm_init_srfi_4): Split into scm_bootstrap_srfi_4() and scm_init_srfi_4(), after the pattern of scm_init_bytevectors() and scm_bootstrap_bytevectors(). * libguile/init.c: Replace scm_init_srfi_4() call by scm_bootstrap_srfi_4(). * module/srfi/srfi-4.scm: Load newly defined srfi-4 extension. This provides undocumented make-srfi-4-vector. * module/srfi/srfi-4/gnu.scm: Export srfi-4-vector-type-size. * doc/ref/srfi-modules.texi: Document srfi-4-vector-type-size.
Diffstat (limited to 'libguile/srfi-4.c')
-rw-r--r--libguile/srfi-4.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/libguile/srfi-4.c b/libguile/srfi-4.c
index cb9de9d8f..23896c32c 100644
--- a/libguile/srfi-4.c
+++ b/libguile/srfi-4.c
@@ -37,6 +37,7 @@
#include "numbers.h"
#include "uniform.h"
#include "variable.h"
+#include "version.h"
#include "srfi-4.h"
@@ -277,8 +278,21 @@ SCM_DEFINE (scm_make_srfi_4_vector, "make-srfi-4-vector", 2, 1, 0,
}
#undef FUNC_NAME
+SCM_DEFINE (scm_srfi_4_vector_type_size, "srfi-4-vector-type-size", 1, 0, 0,
+ (SCM vec),
+ "Return the size, in bytes, of each element of a srfi-4 vector.")
+#define FUNC_NAME s_scm_srfi_4_vector_type_size
+{
+ SCM_VALIDATE_BYTEVECTOR (1, vec);
+ return scm_from_size_t (SCM_BYTEVECTOR_TYPE_SIZE (vec));
+}
+#undef FUNC_NAME
+
+
+/* Initialization. */
+
void
-scm_init_srfi_4 (void)
+scm_bootstrap_srfi_4 (void)
{
#define REGISTER(tag, TAG) \
scm_i_register_vector_constructor \
@@ -298,6 +312,15 @@ scm_init_srfi_4 (void)
REGISTER (c32, C32);
REGISTER (c64, C64);
+ scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
+ "scm_init_srfi_4",
+ (scm_t_extension_init_func) scm_init_srfi_4,
+ NULL);
+}
+
+void
+scm_init_srfi_4 (void)
+{
#include "srfi-4.x"
}