;;;--------------------------------------------------------------------------
;;; Module objects.
-(defparameter *module-map* (make-hash-table :test #'equal)
+(defvar-unbound *module-map*
"Hash table mapping true names to module objects.")
+(define-clear-the-decks reset-module-map
+ (setf *module-map* (make-hash-table :test #'equal)))
(defun build-module
(name thunk &key (truename (probe-file name)) location)
(:documentation
"Represents a fragment of C code to be written to an output file.
- A C fragment is aware of its original location, and will bear proper #line
- markers when written out."))
+ A C fragment is aware of its original location, and will bear proper
+ `#line' markers when written out."))
(defun output-c-excursion (stream location func)
"Invoke FUNC surrounding it by writing #line markers to STREAM.
(export '(code-fragment-item code-fragment code-fragment-reason
code-fragment-name code-fragment-constraints))
(defclass code-fragment-item ()
- ((fragment :initarg :fragment :type c-fragment :reader code-fragment)
+ ((fragment :initarg :fragment :type (or string c-fragment)
+ :reader code-fragment)
(reason :initarg :reason :type keyword :reader code-fragment-reason)
(name :initarg :name :type t :reader code-fragment-name)
(constraints :initarg :constraints :type list