;;;----- 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
((in-use-p :initarg :in-use-p :initform nil
:type boolean :accessor var-in-use-p)))
+(define-module-var *temporary-index* 0
+ "Index for temporary name generation.
+
+ This is automatically reset to zero before the output functions are
+ invoked to write a file. This way, we can ensure that the same output
+ file is always produced from the same input.")
+
+(define-clear-the-decks reset-codegen-index
+ (setf *temporary-index* 0))
+
(defmethod commentify-argument-name ((name temporary-name))
nil)
;; package. The `definst' machinery will symbolicate the various associated
;; methods correctly despite this subterfuge.
-(definst if (stream :export t) (#1=#:condition consequent alternative)
- (format-compound-statement (stream consequent alternative)
+(definst if (stream :export t) (#1=#:cond conseq alt)
+ (format-compound-statement (stream conseq alt)
(format stream "if (~A)" #1#))
- (when alternative
- (format-compound-statement (stream alternative)
+ (when alt
+ (format-compound-statement (stream alt)
(write-string "else" stream))))
-(definst while (stream :export t) (#1=#:condition body)
+(definst while (stream :export t) (#1=#:cond body)
(format-compound-statement (stream body)
(format stream "while (~A)" #1#)))
-(definst do-while (stream :export t) (body #1=#:condition)
+(definst do-while (stream :export t) (body #1=#:cond)
(format-compound-statement (stream body :space)
(write-string "do" stream))
(format stream "while (~A);" #1#))