X-Git-Url: https://git.hcoop.net/bpt/guile.git/blobdiff_plain/5fc051babef5ea07cf48c02c31ef729344639f9a..d5dffec4ffcb93ab649acb2b6f7d8a013ba0e10e:/libguile/bitvectors.c diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c index 2eef1dc56..d594317b2 100644 --- a/libguile/bitvectors.c +++ b/libguile/bitvectors.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -42,6 +42,13 @@ #define BITVECTOR_LENGTH(obj) ((size_t)SCM_CELL_WORD_1(obj)) #define BITVECTOR_BITS(obj) ((scm_t_uint32 *)SCM_CELL_WORD_2(obj)) +scm_t_uint32 *scm_i_bitvector_bits (SCM vec) +{ + if (!IS_BITVECTOR (vec)) + abort (); + return BITVECTOR_BITS (vec); +} + int scm_i_print_bitvector (SCM vec, SCM port, scm_print_state *pstate) { @@ -713,7 +720,7 @@ SCM_DEFINE (scm_bit_count_star, "bit-count*", 3, 0, 0, ssize_t kv_inc; const scm_t_uint32 *kv_bits; - kv_bits = scm_bitvector_elements (v, &kv_handle, + kv_bits = scm_bitvector_elements (kv, &kv_handle, &kv_off, &kv_len, &kv_inc); if (v_len != kv_len) @@ -852,36 +859,6 @@ scm_istr2bve (SCM str) return res; } -/* FIXME: h->array should be h->vector */ -static SCM -bitvector_handle_ref (scm_t_array_handle *h, size_t pos) -{ - return scm_c_bitvector_ref (h->array, pos); -} - -static void -bitvector_handle_set (scm_t_array_handle *h, size_t pos, SCM val) -{ - scm_c_bitvector_set_x (h->array, pos, val); -} - -static void -bitvector_get_handle (SCM bv, scm_t_array_handle *h) -{ - h->array = bv; - h->ndims = 1; - h->dims = &h->dim0; - h->dim0.lbnd = 0; - h->dim0.ubnd = BITVECTOR_LENGTH (bv) - 1; - h->dim0.inc = 1; - h->element_type = SCM_ARRAY_ELEMENT_TYPE_BIT; - h->elements = h->writable_elements = BITVECTOR_BITS (bv); -} - -SCM_ARRAY_IMPLEMENTATION (scm_tc7_bitvector, - 0x7f, - bitvector_handle_ref, bitvector_handle_set, - bitvector_get_handle) SCM_VECTOR_IMPLEMENTATION (SCM_ARRAY_ELEMENT_TYPE_BIT, scm_make_bitvector) void