[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] 19/324: Define a few missing functions
From: |
gnunet |
Subject: |
[gnunet-scheme] 19/324: Define a few missing functions |
Date: |
Tue, 21 Sep 2021 13:20:59 +0200 |
This is an automated email from the git hooks/post-receive script.
maxime-devos pushed a commit to branch master
in repository gnunet-scheme.
commit 70e1632d1c67be7e18f0d33732d219d39630a8c8
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Mon Nov 9 20:16:53 2020 +0100
Define a few missing functions
---
gnu/gnunet/metadata.scm | 31 ++++++++++++++++++++++++-------
1 file changed, 24 insertions(+), 7 deletions(-)
diff --git a/gnu/gnunet/metadata.scm b/gnu/gnunet/metadata.scm
index c7e8f22..777f1d0 100644
--- a/gnu/gnunet/metadata.scm
+++ b/gnu/gnunet/metadata.scm
@@ -54,6 +54,7 @@
(only (gnu gnunet utils decompress) decompress)
(only (gnu gnunet utils hat-let) let^)
(only (srfi srfi-31) rec)
+ (only (srfi srfi-43) vector-unfold)
(only (srfi srfi-45) delay force))
;; Meta data item
@@ -260,6 +261,27 @@ Other version numbers are not yet defined."
0 for NULL."
(bytevector-u32-ref bv (+ offset 16) (endianness big)))
+ (define (vector-insert vec i x)
+ "Insert @var{x} into the vector @var{vec} at offset @var{i}"
+ (vector-unfold (lambda (j)
+ (cond ((< j i) (vector-ref vec j))
+ ((= j i) x)
+ ((> j i) (vector-ref vec (- j 1)))))
+ (+ 1 (vector-length vec))))
+
+ (define (vector-replace vec i x)
+ "Replace the element at offset @var{i} in @var{vec} by @var{x}"
+ (vector-unfold (lambda (j)
+ (cond ((= j i) x)
+ (else (vector-ref vec j))))
+ (vector-length vec)))
+
+ (define (bv-slice bv offset length)
+ "Copy @var{length} bytes from @var{bv}, starting at @var{offset}."
+ (let ((bv-new (make-bytevector length)))
+ (bytevector-copy! bv offset bv-new 0 length)
+ bv-new))
+
;; TODO: bytevector slices
(define meta-data-deserialize
(case-lambda
@@ -370,13 +392,8 @@ TODO: perhaps a variant raising conditions may be more
informative."
;; Does not include terminating \0.
(! plugin-bv
(and (> plugin-name-length 0)
- (make-bytevector (- plugin-name-length 1))))
- (_ (if plugin-bv
- (bytevector-copy! cdata-bv
- (+ mdata-offset left)
- plugin-bv
- 0
- (bytevector-length plugin-bv))))
+ (bv-slice cdata-bv (+ mdata-offset left)
+ (- plugin-name-length 1))))
;; There isn't any formal requirement for
;; being encoded as UTF-8 as far as I know,
;; but in practice this will probably be ASCII,
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet-scheme] 08/324: Define libextractor metatypes, (continued)
- [gnunet-scheme] 08/324: Define libextractor metatypes, gnunet, 2021/09/21
- [gnunet-scheme] 06/324: Begin defining (gnu gnunet metadata), gnunet, 2021/09/21
- [gnunet-scheme] 14/324: Define a new binding construct, gnunet, 2021/09/21
- [gnunet-scheme] 18/324: Fix variable references, gnunet, 2021/09/21
- [gnunet-scheme] 16/324: Define relevant serialised structures for metadata, gnunet, 2021/09/21
- [gnunet-scheme] 05/324: Correct dependencies in (gnu gnunet directory), gnunet, 2021/09/21
- [gnunet-scheme] 15/324: Define a meta data deserialisation procedure, gnunet, 2021/09/21
- [gnunet-scheme] 12/324: [guile-zlib] Bind the uncompress function, gnunet, 2021/09/21
- [gnunet-scheme] 22/324: Don't forget to pass the plugin name, gnunet, 2021/09/21
- [gnunet-scheme] 21/324: Fix typo, gnunet, 2021/09/21
- [gnunet-scheme] 19/324: Define a few missing functions,
gnunet <=
- [gnunet-scheme] 27/324: Define bytevector slices, gnunet, 2021/09/21
- [gnunet-scheme] 09/324: Fix libextractor imports, gnunet, 2021/09/21
- [gnunet-scheme] 11/324: Fix some imports and exports, gnunet, 2021/09/21
- [gnunet-scheme] 17/324: Fix libextractor imports, gnunet, 2021/09/21
- [gnunet-scheme] 20/324: Define missing constants, gnunet, 2021/09/21
- [gnunet-scheme] 23/324: Correct variable reference, gnunet, 2021/09/21
- [gnunet-scheme] 24/324: Regularise naming convention, gnunet, 2021/09/21
- [gnunet-scheme] 25/324: Extend let^, gnunet, 2021/09/21
- [gnunet-scheme] 30/324: Correct maximum in metaformats.scm and metatypes.scm, gnunet, 2021/09/21
- [gnunet-scheme] 26/324: Port meta-data-serialize/uncached, gnunet, 2021/09/21