[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] 97/324: utils: bv-slice: Define a record printer.
From: |
gnunet |
Subject: |
[gnunet-scheme] 97/324: utils: bv-slice: Define a record printer. |
Date: |
Tue, 21 Sep 2021 13:22:17 +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 442c18e35e874ad707b0f1242286e53836aba0cd
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Sun Mar 21 16:50:50 2021 +0100
utils: bv-slice: Define a record printer.
* gnu/gnunet/utils/bv-slice.scm
(print-slice): Define a procedure for printing slices to a port
and use it as the record printer for slices.
---
gnu/gnunet/utils/bv-slice.scm | 35 ++++++++++++++++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/gnu/gnunet/utils/bv-slice.scm b/gnu/gnunet/utils/bv-slice.scm
index 7d13b08..5dcfd66 100644
--- a/gnu/gnunet/utils/bv-slice.scm
+++ b/gnu/gnunet/utils/bv-slice.scm
@@ -52,7 +52,12 @@
(rnrs bytevectors)
(rnrs control)
(rnrs records syntactic)
- (srfi srfi-31))
+ (srfi srfi-31)
+ ;; only for printing records
+ (only (rnrs io ports)
+ put-char put-string)
+ (only (srfi srfi-9 gnu)
+ set-record-type-printer!))
;; Slicing
@@ -67,6 +72,34 @@
(opaque #t)
(sealed #t))
+ ;; Not set in stone. Override the record printer to
+ ;; avoid printing large bytevectors and instead only
+ ;; print the sliced part.
+ (define (print-slice slice port)
+ (put-string port "#<slice (")
+ (put-string port
+ (cond ((and (slice-readable? slice)
+ (slice-writable? slice))
+ "CAP_READ | CAP_WRITE")
+ ((slice-readable? slice)
+ "CAP_READ")
+ ((slice-writable? slice)
+ "CAP_WRITE")
+ (#t
+ "0")))
+ (put-string port "):")
+ (let ((bv (slice-bv slice))
+ (end (+ (slice-offset slice)
+ (slice-length slice))))
+ (let loop ((i (slice-offset slice)))
+ (if (< i end)
+ (let ((val (bytevector-u8-ref bv i)))
+ (put-char port #\ )
+ (put-string port (number->string val))
+ (loop (+ i 1))))))
+ (put-char port #\>))
+ (set-record-type-printer! <slice> print-slice)
+
(define slice-slice
(case-lambda
"Select a part of the slice, preserving capabilities"
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet-scheme] 122/324: netstruct: Pass index for u8 (zero)., (continued)
- [gnunet-scheme] 122/324: netstruct: Pass index for u8 (zero)., gnunet, 2021/09/21
- [gnunet-scheme] 123/324: netstruct: Select a part of the slice before trying to read., gnunet, 2021/09/21
- [gnunet-scheme] 124/324: netstruct: Use the correct size for bounds checking in 'select'., gnunet, 2021/09/21
- [gnunet-scheme] 130/324: mq: New module, replacing message-io., gnunet, 2021/09/21
- [gnunet-scheme] 132/324: mq: Do not hardcode suspicious queue length., gnunet, 2021/09/21
- [gnunet-scheme] 133/324: mq: Pluralise ‘message-queue-handler’., gnunet, 2021/09/21
- [gnunet-scheme] 137/324: mq: Make %suspicious-length a sort-of exported parameter., gnunet, 2021/09/21
- [gnunet-scheme] 139/324: mq: Make accessors of &overly-full-queue-warnings predictably named., gnunet, 2021/09/21
- [gnunet-scheme] 141/324: mq: Return the envelope after enqueueing and add more tests., gnunet, 2021/09/21
- [gnunet-scheme] 147/324: Merge branch 'master' into proper-mq, gnunet, 2021/09/21
- [gnunet-scheme] 97/324: utils: bv-slice: Define a record printer.,
gnunet <=
- [gnunet-scheme] 118/324: netstruct: Fix field lookup and offset calculation., gnunet, 2021/09/21
- [gnunet-scheme] 140/324: mq: Export &overly-full-queue-warning and friends., gnunet, 2021/09/21
- [gnunet-scheme] 144/324: mq: Test message cancellation., gnunet, 2021/09/21
- [gnunet-scheme] 145/324: mq: envelope: Correct spelling in comments and docstrings., gnunet, 2021/09/21
- [gnunet-scheme] 87/324: mq: define message queue module, gnunet, 2021/09/21
- [gnunet-scheme] 96/324: doc: Fix typo in README.org., gnunet, 2021/09/21
- [gnunet-scheme] 102/324: tests: config-parser: Don't generate inexact numbers., gnunet, 2021/09/21
- [gnunet-scheme] 116/324: utils: hat-let: Fix inline procedure definitions., gnunet, 2021/09/21
- [gnunet-scheme] 117/324: mq: Define envelope data type, again., gnunet, 2021/09/21
- [gnunet-scheme] 126/324: netstruct: Verify there is a setter (not a reader) in set%!., gnunet, 2021/09/21