gnuvince / clj-starcraft
No description has been added.
Clone this repository (size: 138.8 KB): HTTPS / SSH
$ hg clone http://bitbucket.org/gnuvince/clj-starcraft/
| commit 48: | 49513e3ec01f |
| parent 47: | 20dd6adcb9d0 |
| branch: | default |
removed extraneous parameter from make-reader and renamed getters to readers
Changed (Δ39 bytes):
raw changeset »
src/starcraft/replay/parse.clj (8 lines added, 9 lines removed)
Up to file-list src/starcraft/replay/parse.clj:
11 |
11 |
|
12 |
12 |
|
13 |
13 |
(defmacro make-reader |
14 |
[ |
|
14 |
[get-fn mask-fn] |
|
15 |
15 |
`(fn [#^ByteBuffer buf# len#] |
16 |
16 |
(if (= len# 1) |
17 |
17 |
(~mask-fn (. buf# (~get-fn))) |
18 |
(let [ |
|
18 |
(let [#^"[I" arr# (int-array len#)] |
|
19 |
19 |
(dotimes [i# len#] |
20 |
(aset |
|
20 |
(aset-int arr# i# (~mask-fn (. buf# (~get-fn))))) |
|
21 |
21 |
arr#)))) |
22 |
22 |
|
23 |
||
24 |
23 |
(def read-field |
25 |
24 |
(let [mask8 (fn [x] (bit-and x 0xff)) |
26 |
25 |
mask16 (fn [x] (bit-and x 0xffff)) |
27 |
read-bytes (make-reader Byte get mask8) |
|
28 |
read-shorts (make-reader Short getShort mask16) |
|
29 |
read-ints (make-reader Integer getInt identity) |
|
30 |
getters {Byte read-bytes |
|
26 |
read-bytes (make-reader get mask8) |
|
27 |
read-shorts (make-reader getShort mask16) |
|
28 |
read-ints (make-reader getInt identity) |
|
29 |
readers {Byte read-bytes |
|
31 |
30 |
Short read-shorts |
32 |
31 |
Integer read-ints |
33 |
32 |
String read-null-string}] |
35 |
34 |
(let [real-size (if (vector? size) |
36 |
35 |
(apply read-field buf size) |
37 |
36 |
size)] |
38 |
(( |
|
37 |
((readers type) buf real-size))))) |
|
39 |
38 |
|
40 |
39 |
|
41 |
40 |
(defn parse-buffer |
