Welcome to the CHICKEN Scheme pasting service
rough dict type support for dbus pasted by mario-goulart on Wed Feb 8 18:59:02 2012
Index: dbus.scm =================================================================== --- dbus.scm (revision 25842) +++ dbus.scm (working copy) @@ -89,6 +89,7 @@ (define dbus:type-signature-string (foreign-value DBUS_TYPE_SIGNATURE_AS_STRING int)) (define dbus:type-array (foreign-value DBUS_TYPE_ARRAY int)) (define dbus:type-array-string (foreign-value DBUS_TYPE_ARRAY_AS_STRING int)) +(define dbus:type-dict (foreign-value DBUS_TYPE_DICT_ENTRY int)) (define dbus:make-context) (define dbus:send) @@ -387,6 +388,8 @@ C_return (ret);") iter)] [(eq? type dbus:type-array) (iter->vector (make-sub-iter iter))] + [(eq? type dbus:type-dict) + (iter->list (make-sub-iter iter))] ;; unsupported so far (not understood well enough): ;; dbus:type-object-path and dbus:type-signature ;; dbus:type-invalid is returned as #f (could be (void) but that
also variants and structs support pasted by mario-goulart on Wed Feb 8 19:16:58 2012
Index: dbus.scm =================================================================== --- dbus.scm (revision 25842) +++ dbus.scm (working copy) @@ -89,6 +89,9 @@ (define dbus:type-signature-string (foreign-value DBUS_TYPE_SIGNATURE_AS_STRING int)) (define dbus:type-array (foreign-value DBUS_TYPE_ARRAY int)) (define dbus:type-array-string (foreign-value DBUS_TYPE_ARRAY_AS_STRING int)) +(define dbus:type-dict (foreign-value DBUS_TYPE_DICT_ENTRY int)) +(define dbus:type-struct (foreign-value DBUS_TYPE_STRUCT int)) +(define dbus:type-variant (foreign-value DBUS_TYPE_VARIANT int)) (define dbus:make-context) (define dbus:send) @@ -387,6 +390,8 @@ C_return (ret);") iter)] [(eq? type dbus:type-array) (iter->vector (make-sub-iter iter))] + [(memq type (list dbus:type-dict dbus:type-struct dbus:type-variant)) + (iter->list (make-sub-iter iter))] ;; unsupported so far (not understood well enough): ;; dbus:type-object-path and dbus:type-signature ;; dbus:type-invalid is returned as #f (could be (void) but that
unknown type type for dbus added by mario-goulart on Wed Feb 8 19:41:39 2012
Index: dbus.scm =================================================================== --- dbus.scm (revision 25842) +++ dbus.scm (working copy) @@ -89,6 +89,9 @@ (define dbus:type-signature-string (foreign-value DBUS_TYPE_SIGNATURE_AS_STRING int)) (define dbus:type-array (foreign-value DBUS_TYPE_ARRAY int)) (define dbus:type-array-string (foreign-value DBUS_TYPE_ARRAY_AS_STRING int)) +(define dbus:type-dict (foreign-value DBUS_TYPE_DICT_ENTRY int)) +(define dbus:type-struct (foreign-value DBUS_TYPE_STRUCT int)) +(define dbus:type-variant (foreign-value DBUS_TYPE_VARIANT int)) (define dbus:make-context) (define dbus:send) @@ -125,6 +128,8 @@ (define dbus:discover-api-xml) +(define-record unknown-type) + (define-external (C_msg_cb (dbus:bus bus) (message-ptr msg)) bool (let* ([cb (find-callback bus msg)][found (procedure? cb)]) ; (printf "got a message: ~s on bus ~a and found callback ~s~%" msg bus cb) @@ -387,11 +392,13 @@ C_return (ret);") iter)] [(eq? type dbus:type-array) (iter->vector (make-sub-iter iter))] + [(memq type (list dbus:type-dict dbus:type-struct dbus:type-variant)) + (iter->list (make-sub-iter iter))] ;; unsupported so far (not understood well enough): ;; dbus:type-object-path and dbus:type-signature ;; dbus:type-invalid is returned as #f (could be (void) but that ;; would be the termination condition for the iterator) - [else #f] ))) + [else (make-unknown-type)] ))) (define (make-sub-iter iter) (let* ([sub ((foreign-lambda* message-iter-ptr ((message-iter-ptr iter))