PersistentTreeMapSeq
(PersistentTreeMapSeq. meta stack ascending? cnt __hash)
(deftype PersistentTreeMapSeq [meta stack ^boolean ascending? cnt ^:mutable __hash]
Object
(toString [coll]
(pr-str* coll))
(equiv [this other]
(-equiv this other))
(indexOf [coll x]
(-indexOf coll x 0))
(indexOf [coll x start]
(-indexOf coll x start))
(lastIndexOf [coll x]
(-lastIndexOf coll x (count coll)))
(lastIndexOf [coll x start]
(-lastIndexOf coll x start))
ISeqable
(-seq [this] this)
ISequential
ISeq
(-first [this] (peek stack))
(-rest [this]
(let [t (first stack)
next-stack (tree-map-seq-push (if ascending? (.-right t) (.-left t))
(next stack)
ascending?)]
(if-not (nil? next-stack)
(PersistentTreeMapSeq. nil next-stack ascending? (dec cnt) nil)
())))
INext
(-next [this]
(let [t (first stack)
next-stack (tree-map-seq-push (if ascending? (.-right t) (.-left t))
(next stack)
ascending?)]
(when-not (nil? next-stack)
(PersistentTreeMapSeq. nil next-stack ascending? (dec cnt) nil))))
ICounted
(-count [coll]
(if (neg? cnt)
(inc (count (next coll)))
cnt))
IEquiv
(-equiv [coll other] (equiv-sequential coll other))
ICollection
(-conj [coll o] (cons o coll))
IEmptyableCollection
(-empty [coll] (.-EMPTY List))
IHash
(-hash [coll] (caching-hash coll hash-ordered-coll __hash))
IMeta
(-meta [coll] meta)
IWithMeta
(-with-meta [coll new-meta]
(if (identical? new-meta meta)
coll
(PersistentTreeMapSeq. new-meta stack ascending? cnt __hash)))
IReduce
(-reduce [coll f] (seq-reduce f coll))
(-reduce [coll f start] (seq-reduce f start coll)))