;;;----- Licensing notice ---------------------------------------------------
;;;
-;;; This file is part of the Sensble Object Design, an object system for C.
+;;; This file is part of the Sensible Object Design, an object system for C.
;;;
;;; SOD is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
(cl:in-package #:sod)
+;;;--------------------------------------------------------------------------
+;;; Miscellaneous details.
+
+(export '*sod-version*)
+(defparameter *sod-version* sod-sysdef:*version*
+ "The version of the SOD translator system, as a string.")
+
;;;--------------------------------------------------------------------------
;;; Debugging utilities.
(defun test-module (path reason)
"Reset the translator's state, read a module from PATH and output it with
REASON, returning the result as a string."
- (unless *builtin-module* (make-builtin-module))
(clear-the-decks)
(setf *module-map* (make-hash-table :test #'equal))
(with-open-file (out *debugout-pathname*
:if-does-not-exist :create)
(output-module (read-module path) reason out)))
+;;;--------------------------------------------------------------------------
+;;; Calisthenics.
+
+(export 'exercise)
+(defun exercise ()
+ "Exercise the pieces of the metaobject protocol.
+
+ In some Lisps, the compiler is run the first time methods are called, to
+ do fancy just-in-time optimization things. This is great, only the
+ program doesn't actually run for very long and a lot of that work is
+ wasted because we're going to have to do it again next time the program
+ starts. Only, if we exercise the various methods, or at least a large
+ fraction of them, before we dump an image, then everything will be fast.
+
+ That's the theory anyway. Call this function before you dump an image and
+ see what happens."
+
+ (clear-the-decks)
+ (dolist (reason '(:h :c))
+ (with-output-to-string (bitbucket)
+ (output-module *builtin-module* reason bitbucket)))
+
+ (clear-the-decks))
+
;;;----- That's all, folks --------------------------------------------------