std.lib.protocol

class:implements?

added in 3.0

(class:implements? {:keys [impls], :as protocol} type)(class:implements? protocol type method)

checks whether a type has implemented a protocol

(class:implements? state/IStateGet clojure.lang.Atom) => true

protocol:impls

added in 3.0

(protocol:impls protocol)

returns types that implement the protocol

(protocol:impls state/IStateSet) => (any (contains clojure.lang.Agent clojure.lang.Ref clojure.lang.IAtom clojure.lang.Volatile clojure.lang.IPending clojure.lang.Var :in-any-order :gaps-ok) #{})

(protocol:impls state/IStateGet) => (any (contains clojure.lang.IDeref clojure.lang.IPending :in-any-order :gaps-ok) #{})

protocol:interface

added in 3.0

(protocol:interface protocol)

returns the java interface for a given protocol

(protocol:interface state/IStateGet) => std.protocol.state.IStateGet

protocol:methods

added in 3.0

(protocol:methods protocol)

returns the methods provided by the protocol

(protocol:methods state/IStateSet) => ’-clone-state -empty-state -set-state -update-state

protocol:remove

added in 3.0

(protocol:remove protocol atype)

removes a protocol

(defprotocol -A- (-dostuff _))

(do (extend-protocol -A- String (-dostuff _))

(class:implements? -A- String "-dostuff"))

=> true

(do (protocol:remove -A- String) (class:implements? -A- String “-dostuff”)) => false

protocol:signatures

added in 3.0

(protocol:signatures protocol)

returns the method signatures provided by the protocol

(protocol:signatures state/IStateSet) => ’{-update-state {:arglists (obj f args opts) :doc nil} -set-state {:arglists (obj v opts) :doc nil} -empty-state {:arglists (obj opts) :doc nil} -clone-state {:arglists (obj opts) :doc nil}}

protocol?

added in 3.0

(protocol? obj)

checks whether an object is a protocol

(protocol? state/IStateGet) => true