Back
accessor (clj)
(source)function
(accessor s key)
Returns a fn that, given an instance of a structmap with the basis,
returns the value at the key. The key must be in the basis. The
returned function should be (slightly) more efficient than using
get, but such use of accessors should be limited to known
performance-critical areas.
Examples
marick/peano
(ns peano.t-data
(:require [clojure.core.logic :as l])
(:use midje.sweet
peano.data))
(eval (data-accessor 'animal :name [{:name "bess", :hooves 4}]))
(fact "can make the data-accessor-by-name form"
(animal-data "bess") => {:name "bess", :hooves 4})
dco-dev/interval-tree
(ns com.dean.interval-tree.tree.ordered-map
(:require [clojure.core.reducers :as r :refer [coll-fold]]
[com.dean.interval-tree.tree.node :as node]
[com.dean.interval-tree.tree.protocol :as proto]
[com.dean.interval-tree.tree.root]
[com.dean.interval-tree.tree.tree :as tree]
[com.dean.interval-tree.tree.order :as order])
(:import [clojure.lang RT]
[com.dean.interval_tree.tree.root INodeCollection
IBalancedCollection
IOrderedCollection]))
java.util.Map
(get [this k]
(.valAt this k))
(isEmpty [_]
(node/leaf? root))
(size [_]
(tree/node-size root))
(keySet [this]
(with-ordered-map this
(set (tree/node-vec root :accessor :k))))
(put [_ _ _]
(throw (UnsupportedOperationException.)))
(putAll [_ _]
(throw (UnsupportedOperationException.)))
(clear [_]
(throw (UnsupportedOperationException.)))
(values [this]
(with-ordered-map this
(tree/node-vec root :accessor :v)))
(entrySet [this]
(with-ordered-map this
(set (tree/node-vec root :accessor :kv))))
(iterator [this]
(clojure.lang.SeqIterator. (seq this)))
clojure.lang.IPersistentCollection
(equiv [this o]
(with-ordered-map this
(cond
(identical? this o) 0
(.isCompatible this o) (and (= (.count this) (.count o))
(zero? (tree/node-map-compare root (.getRoot o))))
(map? o) (.equiv (into (empty o) (tree/node-vec root :accessor :kv)) o)
true (throw (ex-info "unsupported comparison: " {:this this :o o})))))
dco-dev/interval-tree
(ns com.dean.interval-tree.tree.interval-map
(:require [clojure.core.reducers :as r :refer [coll-fold]]
[com.dean.interval-tree.tree.interval :as interval]
[com.dean.interval-tree.tree.node :as node]
[com.dean.interval-tree.tree.root]
[com.dean.interval-tree.tree.order :as order]
[com.dean.interval-tree.tree.tree :as tree])
(:import [clojure.lang RT]
[com.dean.interval_tree.tree.root INodeCollection
IBalancedCollection
IOrderedCollection
IIntervalCollection]))
java.util.Map
(get [this k]
(.valAt this k))
(isEmpty [_]
(node/leaf? root))
(size [_]
(tree/node-size root))
(keySet [this]
(with-interval-map this
(set (tree/node-vec root :accessor :k))))
(put [_ _ _]
(throw (UnsupportedOperationException.)))
(putAll [_ _]
(throw (UnsupportedOperationException.)))
(clear [_]
(throw (UnsupportedOperationException.)))
(values [this]
(with-interval-map this
(tree/node-vec root :accessor :v)))
(entrySet [this]
(with-interval-map this
(set (tree/node-vec root :accessor :kv))))
(iterator [this]
(clojure.lang.SeqIterator. (seq this)))
dco-dev/interval-tree
(ns com.dean.interval-tree.tree.interval-set
(:require [clojure.core.reducers :as r :refer [coll-fold]]
[clojure.set]
[com.dean.interval-tree.tree.interval :as interval]
[com.dean.interval-tree.tree.node :as node]
[com.dean.interval-tree.tree.order :as order]
[com.dean.interval-tree.tree.protocol :as proto]
[com.dean.interval-tree.tree.root]
[com.dean.interval-tree.tree.tree :as tree])
(:import [clojure.lang RT]
[com.dean.interval_tree.tree.protocol PExtensibleSet]
[com.dean.interval_tree.tree.root INodeCollection
IBalancedCollection
IOrderedCollection
IIntervalCollection]))
java.util.Collection
(toArray [this]
(with-interval-set this
(object-array (tree/node-vec root :accessor :k)))) ; better constructor not a priority
(isEmpty [_]
(node/leaf? root))
(add [_ _]
(throw (UnsupportedOperationException.)))
(addAll [_ _]
(throw (UnsupportedOperationException.)))
(removeAll [_ _]
(throw (UnsupportedOperationException.)))
(retainAll [_ _]
(throw (UnsupportedOperationException.)))
dco-dev/interval-tree
(ns com.dean.interval-tree.tree.ordered-set
(:require [clojure.core.reducers :as r :refer [coll-fold]]
[clojure.set]
[com.dean.interval-tree.tree.node :as node]
[com.dean.interval-tree.tree.order :as order]
[com.dean.interval-tree.tree.protocol :as proto]
[com.dean.interval-tree.tree.root]
[com.dean.interval-tree.tree.tree :as tree])
(:import [clojure.lang RT]
[com.dean.interval_tree.tree.protocol PExtensibleSet]
[com.dean.interval_tree.tree.root INodeCollection
IBalancedCollection
IOrderedCollection]))
java.util.Collection
(toArray [this]
(with-ordered-set this
(object-array (tree/node-vec root :accessor :k)))) ; better constructor not a priority
(isEmpty [_]
(node/leaf? root))
(add [_ _]
(throw (UnsupportedOperationException.)))
(addAll [_ _]
(throw (UnsupportedOperationException.)))
(removeAll [_ _]
(throw (UnsupportedOperationException.)))
(retainAll [_ _]
(throw (UnsupportedOperationException.)))