- :state nil))
- (include (format nil "#include \"~A\"~%"
- (make-pathname :name "SOD" :type "H"
- :case :common))))
- (call-with-module-environment
- (lambda ()
- (dolist (name '("va_list" "size_t" "ptrdiff_t"))
- (add-to-module module (make-instance 'type-item :name name)))
- (add-to-module module (make-instance 'code-fragment-item
- :reason :c
- :constraints nil
- :name :includes
- :fragment include))
- (bootstrap-classes module)))
- module))
-
-(defvar *builtin-module* nil)
-
-(define-clear-the-decks reset-builtin-module
- (setf *builtin-module* (make-builtin-module)))
+ :state nil)))
+ (with-module-environment (module)
+ (dolist (name '("va_list" "size_t" "ptrdiff_t"))
+ (add-to-module module (make-instance 'type-item :name name)))
+ (flet ((header-name (name)
+ (concatenate 'string "\"" (string-downcase name) ".h\""))
+ (add-includes (reason &rest names)
+ (let ((text (with-output-to-string (out)
+ (dolist (name names)
+ (format out "#include ~A~%" name)))))
+ (add-to-module module
+ (make-instance 'code-fragment-item
+ :reason reason
+ :constraints nil
+ :name :includes
+ :fragment text)))))
+ (add-includes :c (header-name "sod"))
+ (add-includes :h "<stddef.h>"))
+ (bootstrap-classes module))
+ (setf *builtin-module* module)))