+(export 'with-temporary-module)
+(defmacro with-temporary-module ((&key) &body body)
+ "Evaluate BODY within the context of a temporary module."
+ `(call-with-temporary-module (lambda () ,@body)))
+
+;;;--------------------------------------------------------------------------
+;;; Code fragments.
+
+(export '(c-fragment c-fragment-text))
+(defclass c-fragment ()
+ ((location :initarg :location :type file-location :reader file-location)
+ (text :initarg :text :type string :reader c-fragment-text))
+ (: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."))
+