(module era mzscheme
  (require (lib ""))
  (require (file "")
           (file "")
           (file ""))
  ; All of the functionality from in Snooze 2.0 is now in
  ; This is to get around a cyclic dependency that
  ; would occur between roll-back-deltas! in and
  ; set-revision! below.
  ; Procedures -----------------------------------
  ;; set-revision! : persistent-struct integer -> void
  ;; Sets the revision number on a structure and records the change
  ;; in case of rollback.
  (define (set-revision! struct revision)
    (if (and (in-transaction?)
        (let ([old-revision (get-revision struct)])
          (begin0 (set-revision!/internal struct revision)
                  (record-delta! struct 'revision old-revision)))
        (set-revision!/internal struct revision)))
  ; Provide statements ---------------------------
  (provide (all-from-except (file "") set-revision!/internal)
   [set-revision! (-> persistent-struct? (or/c integer? false/c) void?)])