source: project/release/4/easyffi/easyffi.scm @ 14448

Last change on this file since 14448 was 11084, checked in by felix winkelmann, 12 years ago

numbers debugging

File size: 1.2 KB
Line 
1;;;; easyffi.scm
2
3
4(require 'easyffi-base)
5
6
7(module easyffi (foreign-declare 
8                 foreign-parse 
9                 foreign-parse/declare
10                 foreign-include-path)
11
12  (import scheme chicken foreign)
13  (import-for-syntax srfi-1 srfi-13 easyffi-base) 
14
15  (define-syntax foreign-declare
16    (lambda (x r c)
17      (let ((strs (append (cdr x) '("\n"))))
18        (check-c-syntax (string-concatenate strs) 'foreign-declare)
19        (if (every string? strs)
20            `(,(r 'declare)
21              (foreign-declare ,@strs))
22            (syntax-error
23             'foreign-declare "syntax error in declaration" strs) ) ) ))
24
25  (define-syntax foreign-parse 
26    (lambda (x r c)
27      (let ((strs (append (cdr x) '("\n"))))
28        (if (every string? strs)
29            `(,(r 'begin)
30              ,@(parse-easy-ffi (string-concatenate strs)))
31            (syntax-error 'foreign-parse "syntax error in declaration" strs) ) )))
32 
33  (define-syntax foreign-parse/declare 
34    (lambda (x r c)
35      (let ((strs (append (cdr x) '("\n"))))
36        `(,(r 'begin)
37          (,(r 'declare) (foreign-declare ,@strs))
38          (,(r 'foreign-parse) ,@strs)) ) ))
39
40  (define-syntax foreign-include-path
41    (lambda (x r c)
42      (set! ffi-include-path-list (append (cdr x) ffi-include-path-list))
43      '(,(r 'void) ) ) ) 
44
45)
Note: See TracBrowser for help on using the repository browser.