summaryrefslogtreecommitdiff
path: root/src/boot.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot.clj')
-rw-r--r--src/boot.clj23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/boot.clj b/src/boot.clj
index 6ac33e35..7c9b8b5a 100644
--- a/src/boot.clj
+++ b/src/boot.clj
@@ -95,6 +95,10 @@
([name] (. clojure.lang.Symbol (intern name)))
([ns name] (. clojure.lang.Symbol (intern ns name))))
+(defn keyword
+ ([name] (. clojure.lang.Keyword (intern nil name)))
+ ([ns name] (. clojure.lang.Keyword (intern ns name))))
+
(defn gensym
([] (thisfn "G__"))
([prefix-string] (. clojure.lang.Symbol (intern (strcat prefix-string (str (. clojure.lang.RT (nextID))))))))
@@ -952,6 +956,9 @@
(defn struct [s & inits]
(. clojure.lang.PersistentStructMap (create s inits)))
+(defn construct [s & vals]
+ (. clojure.lang.PersistentStructMap (construct s vals)))
+
(defn accessor [s key]
(. clojure.lang.PersistentStructMap (getAccessor s key)))
@@ -964,6 +971,17 @@
(defn load [rdr]
(. clojure.lang.Compiler (load rdr)))
+(defn resultset-seq [#^java.sql.ResultSet rs]
+ (let [rsmeta (. rs (getMetaData))
+ idxs (range 1 (inc (. rsmeta (getColumnCount))))
+ keys (map (comp keyword (memfn toLowerCase))
+ (map (fn [i] (. rsmeta (getColumnName i))) idxs))
+ row-struct (apply create-struct keys)
+ row-values (fn [] (map (fn [#^Integer i] (. rs (getObject i))) idxs))
+ rows (fn []
+ (when (. rs (next))
+ (fnseq (apply construct row-struct (row-values)) thisfn)))]
+ (rows)))
(def *exports*
'(clojure
@@ -983,7 +1001,7 @@
scan touch
key val
line-seq sort sort-by comparator
- rseq sym name namespace locking .. ->
+ rseq sym keyword name namespace locking .. ->
defmulti defmethod remove-method
binding find-var
ref deref commute alter set ensure sync !
@@ -1009,9 +1027,10 @@
max min
bit-shift-left bit-shift-right
bit-and bit-or bit-xor bit-not
- defstruct struct accessor create-struct
+ defstruct struct accessor create-struct construct
subvec
false? true?
*warn-on-reflection*
+ resultset-seq
))