gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet-scheme] 03/49: netstruct/procedural: Support signed integers.


From: gnunet
Subject: [gnunet-scheme] 03/49: netstruct/procedural: Support signed integers.
Date: Sat, 25 Dec 2021 22:59:40 +0100

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 f57634225725be0baf4c76d845e50f37e39f6476
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Wed Sep 15 22:41:21 2021 +0200

    netstruct/procedural: Support signed integers.
    
    * gnu/gnunet/netstruct/procedural.scm
      (unsigned-N-bytes): Rename to ...
      (N-bytes): ... this, and add an argument 'signedness'.
      (N-bytes)[define-unsigned-N-bytes]: Rename to ...
      (N-bytes)[define-N-bytes]: ... this.
      (N-bytes)[name-big,name-little]: Use 'signedness' instead of 'unsigned'.
      (define-unsigned-N-bytes*): Rename to ...
      (define-N-bytes*): ... this, and adjust uses.
      (define-N-bytes*): Add argument 'signedness' and use 'define-N-bytes'.
      (s8): New variable.
      (s16/big,s32/big,s64/big,s16/little,s32/little,s64/little): New
      variables.
      (ieee-double/big,ieee-double/little): Mark as 'signed' instead of 
'unsigned'.
---
 gnu/gnunet/netstruct/procedural.scm | 40 ++++++++++++++++++++++++++-----------
 1 file changed, 28 insertions(+), 12 deletions(-)

diff --git a/gnu/gnunet/netstruct/procedural.scm 
b/gnu/gnunet/netstruct/procedural.scm
index fd5a6af..53b8d95 100644
--- a/gnu/gnunet/netstruct/procedural.scm
+++ b/gnu/gnunet/netstruct/procedural.scm
@@ -43,6 +43,8 @@
 
    u8 u16/big u32/big u64/big
    u16/little u32/little u64/little
+   s8 s16/big s32/big s64/big
+   s16/little s32/little s64/little
    ieee-double/big ieee-double/little
 
    u8vector
@@ -371,37 +373,40 @@ accepting a bytevector slice and a value."
        #:reader primitive-reader
        #:setter primitive-setter))
 
-    (define (unsigned-N-bytes length slice-ref slice-set! . rest)
+    (define (N-bytes length slice-ref slice-set! . rest)
       (apply make-netprimitive length slice-ref slice-set! rest))
 
     ;; Not used at run-time, only when expanding,
     ;; so this doesn't need to end up in the .go.
     (eval-when (expand)
-      (define-syntax define-unsigned-N-bytes
+      (define-syntax define-N-bytes
        (syntax-rules ()
-         ((_ (length slice-ref slice-set!)
+         ((_ signedness
+             (length slice-ref slice-set!)
              (name-big name-little))
           (begin
             (define name-big
-              (unsigned-N-bytes
+              (N-bytes
                length
                (cute slice-ref <> 0 (endianness big))
                (cute slice-set! <> 0 <> (endianness big))
                #:properties '((endianness . big)
-                              (integer-type . unsigned))))
+                              (integer-type . signedness))))
             (define name-little
-              (unsigned-N-bytes
+              (N-bytes
                length
                (cute slice-ref <> 0 (endianness little))
                (cute slice-set! <> 0 <> (endianness little))
                #:properties '((endianness . little)
-                              (integer-type . unsigned))))))))
-      (define-syntax define-unsigned-N-bytes*
+                              (integer-type . signedness))))))))
+      (define-syntax define-N-bytes*
        (syntax-rules ()
-         ((_ ((length slice-ref slice-set!)
+         ((_ signedness
+             ((length slice-ref slice-set!)
               (name-big name-little)) ...)
           (begin
-            (define-unsigned-N-bytes
+            (define-N-bytes
+              signedness
               (length slice-ref slice-set!) (name-big name-little))
             ...)))))
 
@@ -409,11 +414,22 @@ accepting a bytevector slice and a value."
                                  (cut slice-u8-ref <> 0)
                                  (cut slice-u8-set! <> 0 <>)
                                  #:properties '((integer-type . unsigned))))
+    (define s8 (make-netprimitive 1
+                                 (cut slice-s8-ref <> 0)
+                                 (cut slice-s8-set! <> 0 <>)
+                                 #:properties '((integer-type . signed))))
 
-    (define-unsigned-N-bytes*
+    (define-N-bytes*
+      unsigned
       ((2 slice-u16-ref slice-u16-set!) (u16/big u16/little))
       ((4 slice-u32-ref slice-u32-set!) (u32/big u32/little))
-      ((8 slice-u64-ref slice-u64-set!) (u64/big u64/little))
+      ((8 slice-u64-ref slice-u64-set!) (u64/big u64/little)))
+
+    (define-N-bytes*
+      signed
+      ((2 slice-s16-ref slice-s16-set!) (s16/big s16/little))
+      ((4 slice-s32-ref slice-s32-set!) (s32/big s32/little))
+      ((8 slice-s64-ref slice-s64-set!) (s64/big s64/little))
       ((8 slice-ieee-double-ref slice-ieee-double-set!)
        (ieee-double/big ieee-double/little)))
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]