diff --git a/cyclone.scm b/cyclone.scm index afe68920..7d7c8681 100644 --- a/cyclone.scm +++ b/cyclone.scm @@ -91,10 +91,24 @@ include)) input-program))) includes)))) - ((tagged-list? 'import (car input-program)) - (set! imports (cdar input-program)) - (set! input-program (cdr input-program)) - ;(error (list 'imports (cdar input-program))) + (else + ;; Handle import, if present + (cond + ((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 diff --git a/examples/game-of-life-png/life.scm b/examples/game-of-life-png/life.scm index a73e45e9..ee941e35 100644 --- a/examples/game-of-life-png/life.scm +++ b/examples/game-of-life-png/life.scm @@ -17,8 +17,13 @@ ; (only (example life) life) ; (rename (prefix (example grid) 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 "") +;; END C headers ;; Initialize a grid with a glider. ;(define grid (make-grid 24 24))