mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +02:00
Allow including C headers in a program
This commit is contained in:
parent
c9fa2410cf
commit
1fddf8272a
2 changed files with 23 additions and 4 deletions
22
cyclone.scm
22
cyclone.scm
|
@ -91,10 +91,24 @@
|
||||||
include))
|
include))
|
||||||
input-program)))
|
input-program)))
|
||||||
includes))))
|
includes))))
|
||||||
((tagged-list? 'import (car input-program))
|
(else
|
||||||
(set! imports (cdar input-program))
|
;; Handle import, if present
|
||||||
(set! input-program (cdr input-program))
|
(cond
|
||||||
;(error (list 'imports (cdar input-program)))
|
((tagged-list? 'import (car input-program))
|
||||||
|
(set! imports (cdar input-program))
|
||||||
|
(set! input-program (cdr input-program))
|
||||||
|
;(error (list 'imports (cdar input-program)))
|
||||||
|
))
|
||||||
|
;; Handle any C headers
|
||||||
|
(let ((headers (lib:include-c-headers `(dummy dummy ,@input-program))))
|
||||||
|
(cond
|
||||||
|
((not (null? headers))
|
||||||
|
(set! c-headers headers)
|
||||||
|
(set! input-program
|
||||||
|
(filter
|
||||||
|
(lambda (expr)
|
||||||
|
(not (tagged-list? 'include-c-header expr)))
|
||||||
|
input-program)))))
|
||||||
))
|
))
|
||||||
|
|
||||||
;; Process library imports
|
;; Process library imports
|
||||||
|
|
|
@ -17,8 +17,13 @@
|
||||||
; (only (example life) life)
|
; (only (example life) life)
|
||||||
; (rename (prefix (example grid) grid-)
|
; (rename (prefix (example grid) grid-)
|
||||||
; (grid-make make-grid)))
|
; (grid-make make-grid)))
|
||||||
|
|
||||||
|
;; Simple example of including headers in a program.
|
||||||
|
;; Just place them here in the top-level, after
|
||||||
|
;; the (import) expression, if any.
|
||||||
(include-c-header "stdlib.h")
|
(include-c-header "stdlib.h")
|
||||||
(include-c-header "<stdio.h>")
|
(include-c-header "<stdio.h>")
|
||||||
|
;; END C headers
|
||||||
|
|
||||||
;; Initialize a grid with a glider.
|
;; Initialize a grid with a glider.
|
||||||
;(define grid (make-grid 24 24))
|
;(define grid (make-grid 24 24))
|
||||||
|
|
Loading…
Add table
Reference in a new issue