Add a few utility functions.
* binding-utils.scm: add `pointer->string*`. * common.scm: add `bool->int` and `int->bool`, two functions to easily convert `gnunet-ok`, `gnunet-no`, `gnunet-syserror` values to booleans. * fs/uri.scm: export `keyword-list->string`. * tests/uri.scm: test `keyword-list->string`. * scheduler.scm: add `cancel-task!`.
This commit is contained in:
parent
7790951783
commit
6fc73cee9b
|
@ -32,6 +32,7 @@
|
|||
rassoc-ref
|
||||
|
||||
string->pointer*
|
||||
pointer->string*
|
||||
make-c-struct*))
|
||||
|
||||
(define (getf plist value)
|
||||
|
@ -74,3 +75,6 @@
|
|||
if STRING is empty (\"\")."
|
||||
(if (string=? "" string) %null-pointer (string->pointer string)))
|
||||
|
||||
(define (pointer->string* ptr)
|
||||
(if (eq? %null-pointer ptr) #f (pointer->string ptr)))
|
||||
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
gnunet-system-error
|
||||
gnunet-yes
|
||||
gnunet-no
|
||||
bool->int
|
||||
int->bool
|
||||
|
||||
time-relative
|
||||
time-absolute
|
||||
|
@ -96,6 +98,13 @@
|
|||
"GNUNET_STRINGS_string_to_data" : (list '* size_t '* size_t) -> int)
|
||||
|
||||
|
||||
(define (bool->int x) (if x gnunet-yes gnunet-no))
|
||||
(define (int->bool x)
|
||||
(cond ((= gnunet-yes x) #t)
|
||||
((= gnunet-no x) #f)
|
||||
((= gnunet-system-error x) #:system-error)
|
||||
(else #:unknown)))
|
||||
|
||||
(define %xfilename (string->pointer "guile"))
|
||||
|
||||
(define (%free pointer)
|
||||
|
|
|
@ -36,7 +36,9 @@
|
|||
unwrap-uri
|
||||
uri-type
|
||||
uri-file-size
|
||||
uri->string))
|
||||
uri->string
|
||||
|
||||
keyword-list->string))
|
||||
|
||||
(define-record-type <uri>
|
||||
(%wrap-uri pointer type)
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
call-with-scheduler
|
||||
add-task!
|
||||
set-next-task!
|
||||
cancel-task!
|
||||
schedule-shutdown!))
|
||||
|
||||
|
||||
|
@ -52,6 +53,8 @@
|
|||
"GNUNET_SCHEDULER_add_delayed_with_priority" :
|
||||
(list time-relative unsigned-int '* '*) -> '*)
|
||||
|
||||
(define-gnunet cancel-task! "GNUNET_SCHEDULER_cancel" : '(*) -> '*)
|
||||
|
||||
(define-gnunet %speedup-start "GNUNET_SPEEDUP_start_" : '(*) -> int)
|
||||
(define-gnunet %speedup-stop "GNUNET_SPEEDUP_stop_" : '() -> void)
|
||||
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
|
||||
(test-begin "test-fs-uri")
|
||||
|
||||
;; keyword-list->string
|
||||
(test-equal "" (keyword-list->string '()))
|
||||
(test-equal "foo bar baz" (keyword-list->string '("foo" "bar" "baz")))
|
||||
|
||||
;; parse-uri
|
||||
(test-error 'invalid-arg (parse-uri ""))
|
||||
(let ((uri (parse-uri "gnunet://fs/ksk/trek")))
|
||||
|
|
Loading…
Reference in New Issue