mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
* libguile/Makefile.am (lib_LTLIBRARIES): Instead of just "libguile.la", make "libguile-@EFFECTIVE_VERSION@.la". This allows multiple versions of Guile to be installed at once. See http://www106.pair.com/rhp/parallel.html for a rationale. (libguile_@GUILE_EFFECTIVE_VERSION@_la_CFLAGS): (libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES): (EXTRA_libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES): (libguile_@GUILE_EFFECTIVE_VERSION@_la_DEPENDENCIES): (libguile_@GUILE_EFFECTIVE_VERSION@_la_LIBADD): (libguile_@GUILE_EFFECTIVE_VERSION@_la_LDFLAGS): Fixup automake vars to include the effective version. (guile_LDADD): Fix up the spelling of libguile. * libguile/bytevectors.c (scm_bootstrap_bytevectors): * libguile/foreign.c (scm_register_foreign): * libguile/i18n.c (scm_bootstrap_i18n): * libguile/instructions.c (scm_bootstrap_instructions): * libguile/objcodes.c (scm_bootstrap_objcodes): * libguile/programs.c (scm_bootstrap_programs): * libguile/vm.c (scm_bootstrap_vm): Register extensions using e.g. "libguile-2.0" as the libname -- i.e., including the effective version in the libname. * module/ice-9/i18n.scm: * module/rnrs/bytevector.scm: * module/rnrs/io/ports.scm: * module/system/foreign.scm: * module/system/vm/instruction.scm: * module/system/vm/objcode.scm: * module/system/vm/program.scm: * module/system/vm/vm.scm: When doing a load-extension for something in Guile, use the effective version also. * meta/guile-2.0-uninstalled.pc.in (Libs): * meta/guile-2.0.pc.in (Libs): Use -lguile-@EFFECTIVE_VERSION@. This change should mean that code built against Guile should not be affected by the libguile rename. * guile-readline/Makefile.am (libguilereadline_v_@LIBGUILEREADLINE_MAJOR@_la_LIBADD): * srfi/Makefile.am (libguile_srfi_srfi_1_v_@LIBGUILE_SRFI_SRFI_1_MAJOR@_la_LIBADD): (libguile_srfi_srfi_4_v_@LIBGUILE_SRFI_SRFI_4_MAJOR@_la_LIBADD): (libguile_srfi_srfi_13_14_v_@LIBGUILE_SRFI_SRFI_13_14_MAJOR@_la_LIBADD): (libguile_srfi_srfi_60_v_@LIBGUILE_SRFI_SRFI_60_MAJOR@_la_LIBADD): * test-suite/standalone/Makefile.am (test_num2integral_LDADD): (test_round_LDADD): (libtest_asmobs_la_LIBADD): (libtest_ffi_la_LIBADD): (test_list_LDADD): (test_unwind_LDADD): (test_conversion_LDADD): (test_loose_ends_LDADD): (test_scm_c_read_LDADD): (test_scm_take_locale_symbol_LDADD): (test_scm_take_u8vector_LDADD): (libtest_extensions_la_LIBADD): (test_with_guile_module_LDADD): (test_scm_with_guile_LDADD): Fix up the spelling of libguile.la.
82 lines
3.3 KiB
Scheme
82 lines
3.3 KiB
Scheme
;;;; bytevector.scm --- R6RS bytevector API -*- coding: utf-8 -*-
|
|
|
|
;;;; Copyright (C) 2009, 2010 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 as published by the Free Software Foundation; either
|
|
;;;; version 3 of the License, or (at your option) any later version.
|
|
;;;;
|
|
;;;; This library 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 this library; if not, write to the Free Software
|
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
;;; Author: Ludovic Courtès <ludo@gnu.org>
|
|
|
|
;;; Commentary:
|
|
;;;
|
|
;;; A "bytevector" is a raw bit string. This module provides procedures to
|
|
;;; manipulate bytevectors and interpret their contents in a number of ways:
|
|
;;; bytevector contents can be accessed as signed or unsigned integer of
|
|
;;; various sizes and endianness, as IEEE-754 floating point numbers, or as
|
|
;;; strings. It is a useful tool to decode binary data.
|
|
;;;
|
|
;;; Code:
|
|
|
|
(define-module (rnrs bytevector)
|
|
:export-syntax (endianness)
|
|
:export (native-endianness bytevector?
|
|
make-bytevector bytevector-length bytevector=? bytevector-fill!
|
|
bytevector-copy! bytevector-copy
|
|
uniform-array->bytevector
|
|
bytevector-u8-ref bytevector-s8-ref
|
|
bytevector-u8-set! bytevector-s8-set! bytevector->u8-list
|
|
u8-list->bytevector
|
|
bytevector-uint-ref bytevector-uint-set!
|
|
bytevector-sint-ref bytevector-sint-set!
|
|
bytevector->sint-list bytevector->uint-list
|
|
uint-list->bytevector sint-list->bytevector
|
|
|
|
bytevector-u16-ref bytevector-s16-ref
|
|
bytevector-u16-set! bytevector-s16-set!
|
|
bytevector-u16-native-ref bytevector-s16-native-ref
|
|
bytevector-u16-native-set! bytevector-s16-native-set!
|
|
|
|
bytevector-u32-ref bytevector-s32-ref
|
|
bytevector-u32-set! bytevector-s32-set!
|
|
bytevector-u32-native-ref bytevector-s32-native-ref
|
|
bytevector-u32-native-set! bytevector-s32-native-set!
|
|
|
|
bytevector-u64-ref bytevector-s64-ref
|
|
bytevector-u64-set! bytevector-s64-set!
|
|
bytevector-u64-native-ref bytevector-s64-native-ref
|
|
bytevector-u64-native-set! bytevector-s64-native-set!
|
|
|
|
bytevector-ieee-single-ref
|
|
bytevector-ieee-single-set!
|
|
bytevector-ieee-single-native-ref
|
|
bytevector-ieee-single-native-set!
|
|
|
|
bytevector-ieee-double-ref
|
|
bytevector-ieee-double-set!
|
|
bytevector-ieee-double-native-ref
|
|
bytevector-ieee-double-native-set!
|
|
|
|
string->utf8 string->utf16 string->utf32
|
|
utf8->string utf16->string utf32->string))
|
|
|
|
|
|
(load-extension (string-append "libguile-" (effective-version))
|
|
"scm_init_bytevectors")
|
|
|
|
(define-macro (endianness sym)
|
|
(if (memq sym '(big little))
|
|
`(quote ,sym)
|
|
(error "unsupported endianness" sym)))
|
|
|
|
;;; bytevector.scm ends here
|