mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 21:59:17 +02:00
Supporting a (void) argument list as a synonym for ().
Also adding extra checks on function definitions, and allowing running with no arguments as a filter.
This commit is contained in:
parent
f30e53265c
commit
56322d632a
1 changed files with 9 additions and 4 deletions
|
@ -185,8 +185,12 @@
|
||||||
|
|
||||||
(define (parse-func func . o)
|
(define (parse-func func . o)
|
||||||
(if (not (and (= 3 (length func))
|
(if (not (and (= 3 (length func))
|
||||||
(or (identifier? (cadr func)) (list (cadr func)))
|
(or (identifier? (cadr func))
|
||||||
(list (caddr func))))
|
(and (list (cadr func))
|
||||||
|
(<= 1 (length (cadr func)) 3)
|
||||||
|
(every (lambda (x) (or (identifier? x) (not x) (string? x)))
|
||||||
|
(cadr func))))
|
||||||
|
(list? (caddr func))))
|
||||||
(error "bad function definition" func))
|
(error "bad function definition" func))
|
||||||
(let* ((method? (and (pair? o) (car o)))
|
(let* ((method? (and (pair? o) (car o)))
|
||||||
(ret-type (parse-type (car func)))
|
(ret-type (parse-type (car func)))
|
||||||
|
@ -197,7 +201,7 @@
|
||||||
(stub-name (if (and (pair? (cadr func)) (pair? (cddadr func)))
|
(stub-name (if (and (pair? (cadr func)) (pair? (cddadr func)))
|
||||||
(car (cddadr func))
|
(car (cddadr func))
|
||||||
(generate-stub-name scheme-name))))
|
(generate-stub-name scheme-name))))
|
||||||
(let lp ((ls (caddr func))
|
(let lp ((ls (if (equal? (caddr func) '(void)) '() (caddr func)))
|
||||||
(i 0)
|
(i 0)
|
||||||
(results '())
|
(results '())
|
||||||
(c-args '())
|
(c-args '())
|
||||||
|
@ -1607,9 +1611,10 @@
|
||||||
(string-split (cadr args) #\space)
|
(string-split (cadr args) #\space)
|
||||||
#f))
|
#f))
|
||||||
(args (if cflags (cddr args) args))
|
(args (if cflags (cddr args) args))
|
||||||
(src (car args))
|
(src (if (pair? args) (car args) "/dev/stdin"))
|
||||||
(dest
|
(dest
|
||||||
(case (length args)
|
(case (length args)
|
||||||
|
((0) "-")
|
||||||
((1) (string-append (strip-extension src) ".c"))
|
((1) (string-append (strip-extension src) ".c"))
|
||||||
((2) (cadr args))
|
((2) (cadr args))
|
||||||
(else (error "usage: chibi-ffi [-c] <file.stub> [<output.c>]")))))
|
(else (error "usage: chibi-ffi [-c] <file.stub> [<output.c>]")))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue