From fcc86c782c6d1095d889104932ddf96625530962 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Thu, 14 Mar 2013 11:04:49 -0500 Subject: [PATCH] Implement timelines (sorted map of timestamps to values) --- src/hottub/timeline.clj | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/hottub/timeline.clj diff --git a/src/hottub/timeline.clj b/src/hottub/timeline.clj new file mode 100644 index 0000000..5fdf194 --- /dev/null +++ b/src/hottub/timeline.clj @@ -0,0 +1,17 @@ +(ns hottub.timeline) + +(defn timeline-create [& [fncomparison]] + (clojure.lang.PersistentTreeMap/create (or fncomparison #(- %1 %2)) nil)) + +(defn timeline-insert [tln clock val] + (let [queue (or (tln clock) [])] + (assoc tln clock (conj queue val)))) + +(defn timeline-after [tln clock] + (if-let [kvFirst (first tln)] + (let [clockFirst (kvFirst 0)] + (if (>= (.compare (.comp tln) clock clockFirst) 0) + (recur (dissoc tln clockFirst) clock) + tln)) + tln)) +