summaryrefslogtreecommitdiff
path: root/src/clj
diff options
context:
space:
mode:
authorunknown <Ninja@.(none)>2009-11-11 16:34:14 +1100
committerRich Hickey <richhickey@gmail.com>2009-11-24 08:30:52 -0500
commitf966d6efab1463be32213d87343aa17c9003234b (patch)
tree8a2ed5a7014212dc864c48bc596ae5fe66db539d /src/clj
parentfc5157d5b85b62dbf8e809d3caf014c792abd718 (diff)
#209 Unifying array support for primatives
Signed-off-by: Rich Hickey <richhickey@gmail.com>
Diffstat (limited to 'src/clj')
-rw-r--r--src/clj/clojure/core.clj46
1 files changed, 45 insertions, 1 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 535acfcb..89929e02 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -3546,6 +3546,34 @@
([size-or-seq] (. clojure.lang.Numbers float_array size-or-seq))
([size init-val-or-seq] (. clojure.lang.Numbers float_array size init-val-or-seq)))
+(defn boolean-array
+ "Creates an array of booleans"
+ {:inline (fn [& args] `(. clojure.lang.Numbers boolean_array ~@args))
+ :inline-arities #{1 2}}
+ ([size-or-seq] (. clojure.lang.Numbers boolean_array size-or-seq))
+ ([size init-val-or-seq] (. clojure.lang.Numbers boolean_array size init-val-or-seq)))
+
+(defn byte-array
+ "Creates an array of bytes"
+ {:inline (fn [& args] `(. clojure.lang.Numbers byte_array ~@args))
+ :inline-arities #{1 2}}
+ ([size-or-seq] (. clojure.lang.Numbers byte_array size-or-seq))
+ ([size init-val-or-seq] (. clojure.lang.Numbers byte_array size init-val-or-seq)))
+
+(defn char-array
+ "Creates an array of chars"
+ {:inline (fn [& args] `(. clojure.lang.Numbers char_array ~@args))
+ :inline-arities #{1 2}}
+ ([size-or-seq] (. clojure.lang.Numbers char_array size-or-seq))
+ ([size init-val-or-seq] (. clojure.lang.Numbers char_array size init-val-or-seq)))
+
+(defn short-array
+ "Creates an array of shorts"
+ {:inline (fn [& args] `(. clojure.lang.Numbers short_array ~@args))
+ :inline-arities #{1 2}}
+ ([size-or-seq] (. clojure.lang.Numbers short_array size-or-seq))
+ ([size init-val-or-seq] (. clojure.lang.Numbers short_array size init-val-or-seq)))
+
(defn double-array
"Creates an array of doubles"
{:inline (fn [& args] `(. clojure.lang.Numbers double_array ~@args))
@@ -3561,12 +3589,28 @@
([size init-val-or-seq] (. clojure.lang.Numbers int_array size init-val-or-seq)))
(defn long-array
- "Creates an array of ints"
+ "Creates an array of longs"
{:inline (fn [& args] `(. clojure.lang.Numbers long_array ~@args))
:inline-arities #{1 2}}
([size-or-seq] (. clojure.lang.Numbers long_array size-or-seq))
([size init-val-or-seq] (. clojure.lang.Numbers long_array size init-val-or-seq)))
+(definline booleans
+ "Casts to boolean[]"
+ [xs] `(. clojure.lang.Numbers booleans ~xs))
+
+(definline bytes
+ "Casts to bytes[]"
+ [xs] `(. clojure.lang.Numbers bytes ~xs))
+
+(definline chars
+ "Casts to chars[]"
+ [xs] `(. clojure.lang.Numbers chars ~xs))
+
+(definline shorts
+ "Casts to shorts[]"
+ [xs] `(. clojure.lang.Numbers shorts ~xs))
+
(definline floats
"Casts to float[]"
[xs] `(. clojure.lang.Numbers floats ~xs))