a9358399232fc856f475e7ff5ccb5144b6de92aa
[mes.git] / module / rnrs / bytevectors.mes
1 ;;; -*-scheme-*-
2
3 ;;; Mes --- Maxwell Equations of Software
4 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
5 ;;;
6 ;;; bytevectors.mes: This file is part of Mes.
7 ;;;
8 ;;; Mes is free software; you can redistribute it and/or modify it
9 ;;; under the terms of the GNU General Public License as published by
10 ;;; the Free Software Foundation; either version 3 of the License, or (at
11 ;;; your option) any later version.
12 ;;;
13 ;;; Mes is distributed in the hope that it will be useful, but
14 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 ;;; GNU General Public License for more details.
17 ;;;
18 ;;; You should have received a copy of the GNU General Public License
19 ;;; along with Mes.  If not, see <http://www.gnu.org/licenses/>.
20
21 ;;; Commentary:
22
23 ;;; bytevectors.mes 
24
25 ;;; Code:
26
27 ;; rnrs compatibility
28 (define (bytevector-u32-native-set! bv index value)
29   (when (not (= 0 index)) (error "bytevector-u32-native-set! index not zero: " index " value: " value))
30   (let ((x (list
31             (modulo value #x100)
32             (quotient (modulo value #x10000) #x100)
33             (quotient (modulo value #x1000000) #x10000)
34             (quotient value #x1000000))))
35     (set-car! bv (car x))
36     (set-cdr! bv (cdr x))
37     x))
38
39 (define (bytevector-u16-native-set! bv index value)
40   (when (not (= 0 index)) (error "bytevector-u16-native-set! index not zero: " index " value: " value))
41   (let ((x (list (modulo value #x100)
42                  (quotient (modulo value #x10000) #x100))))
43     (set-car! bv (car x))
44     (set-cdr! bv (cdr x))
45     x))
46
47 (define (make-bytevector length)
48   (make-list length 0))