according to the class choice set in the module's `:module-class'
property. This has the side effects of calling `shared-initialize',
setting the module's state to `t', and checking for unrecognized
- properties. (Therefore subclasses should add a method to
- `shared-initialize' taking care of looking at interesting properties, just
- to make sure they're ticked off.)"))
+ properties. (Therefore subclasses should add a method to `shared-
+ initialize' taking care of looking at interesting properties, just to make
+ sure they're ticked off.)"))
;;;--------------------------------------------------------------------------
;;; Module objects.
(export '(module module-name module-pset module-errors
- module-items module-dependencies))
+ module-items module-files module-dependencies module-state))
(defclass module ()
((name :initarg :name :type pathname :reader module-name)
(%pset :initarg :pset :initform (make-pset)
:type pset :reader module-pset)
(errors :initarg :errors :initform 0 :type fixnum :reader module-errors)
(items :initarg :items :initform nil :type list :accessor module-items)
+ (files :initarg :files :initform nil :type list :accessor module-files)
(dependencies :initarg :dependencies :initform nil
:type list :accessor module-dependencies)
(variables :initarg :variables :type list :accessor module-variables
* A list of other modules that this one depends on.
+ * A list of other files this module has read.
+
* A list of module-variable values, in the order in which they're named
in `*module-bindings-alist*'.
"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."))
+
;;;----- That's all, folks --------------------------------------------------