genstubs fixes

This commit is contained in:
Alex Shinn 2010-07-15 22:50:10 +09:00
parent e3f4d51ef7
commit 28b8f8251b
3 changed files with 16 additions and 14 deletions

View file

@ -79,7 +79,7 @@
(define-c errno (delete-directory "rmdir") (string))
(define-c (free DIR) opendir (string))
(define-c dirent readdir ((link DIR)))
(define-c dirent readdir ((link (pointer DIR))))
(define-c int (duplicate-file-descriptor "dup") (int))
(define-c errno (duplicate-file-descriptor-to "dup2") (int int))

View file

@ -44,20 +44,20 @@
(define-c sexp (set-signal-action! "sexp_set_signal_action")
((value ctx sexp) (value self sexp) sexp sexp))
(define-c errno (make-signal-set "sigemptyset") ((result sigset_t)))
(define-c errno (signal-set-fill! "sigfillset") (sigset_t))
(define-c errno (signal-set-add! "sigaddset") (sigset_t int))
(define-c errno (signal-set-delete! "sigaddset") (sigset_t int))
(define-c boolean (signal-set-contains? "sigismember") (sigset_t int))
(define-c errno (make-signal-set "sigemptyset") ((pointer result sigset_t)))
(define-c errno (signal-set-fill! "sigfillset") ((pointer sigset_t)))
(define-c errno (signal-set-add! "sigaddset") ((pointer sigset_t) int))
(define-c errno (signal-set-delete! "sigaddset") ((pointer sigset_t) int))
(define-c boolean (signal-set-contains? "sigismember") ((pointer sigset_t) int))
(define-c errno (signal-mask-block! "sigprocmask")
((value SIG_BLOCK int) sigset_t (value NULL sigset_t)))
((value SIG_BLOCK int) (pointer sigset_t) (pointer value NULL sigset_t)))
(define-c errno (signal-mask-unblock! "sigprocmask")
((value SIG_UNBLOCK int) sigset_t (value NULL sigset_t)))
((value SIG_UNBLOCK int) (pointer sigset_t) (pointer value NULL sigset_t)))
(define-c errno (signal-mask-set! "sigprocmask")
((value SIG_SETMASK int) sigset_t (value NULL sigset_t)))
((value SIG_SETMASK int) (pointer sigset_t) (pointer value NULL sigset_t)))
(define-c errno (current-signal-mask "sigprocmask")
((value SIG_BLOCK int) (value NULL sigset_t) (result sigset_t)))
((value SIG_BLOCK int) (pointer value NULL sigset_t) (pointer result sigset_t)))
(define-c unsigned-int alarm (unsigned-int))
(define-c unsigned-int sleep (unsigned-int))

View file

@ -719,7 +719,7 @@
(lambda (x)
(let ((len (get-array-length func x)))
(cat " " (type-c-name (type-base x)) " ")
(if (and (type-array x) (not (number? len)))
(if (or (and (type-array x) (not (number? len))) (type-pointer? x))
(cat "*"))
(cat (if (type-auto-expand? x) "buf" "tmp") (type-index-string x))
(if (number? len)
@ -730,7 +730,9 @@
(if (type-auto-expand? x)
(cat " " (type-c-name (type-base x))
" *tmp" (type-index-string x) ";\n"))))
(append (if (type-array ret-type) (list ret-type) '())
(append (if (or (type-array ret-type) (type-pointer? ret-type))
(list ret-type)
'())
results
(remove type-result? (filter type-array scheme-args))))
(for-each
@ -788,7 +790,7 @@
(if (not (number? (type-array a)))
(cat " tmp" (type-index a) "[i] = NULL;\n")))
((and (type-result? a) (not (basic-type? a))
(not (type-free? a)) (not (type-pointer? a))
(not (type-free? a)) ;;(not (type-pointer? a))
(not (type-auto-expand? a))
(or (not (type-array a))
(not (integer? len))))
@ -820,7 +822,7 @@
=> (lambda (y) (cat "len" (type-index y))))
(else (write x)))))
((or (type-result? arg) (type-array arg))
(cat (if (or (type-pointer? arg) (type-free? arg) (basic-type? arg))
(cat (if (or (type-free? arg) (basic-type? arg)) ;; (type-pointer? arg)
"&"
"")
"tmp" (type-index arg)))