remove typename argument from typelist
This commit is contained in:
parent
637f156663
commit
06cd910279
1 changed files with 9 additions and 11 deletions
|
|
@ -1863,19 +1863,18 @@
|
||||||
(generate-deserialize-array-as-array array-type n offset segment-source-form)
|
(generate-deserialize-array-as-array array-type n offset segment-source-form)
|
||||||
(generate-deserialize-array-as-vector array-type n offset segment-source-form)))
|
(generate-deserialize-array-as-vector array-type n offset segment-source-form)))
|
||||||
|
|
||||||
(defn- typelist [typename fields]
|
(defn- typelist [fields]
|
||||||
(->>
|
(->>
|
||||||
(partition 2 2 (interleave (reductions + 0 (map (comp size-of second) fields)) fields))
|
(partition 2 2 (interleave (reductions + 0 (map (comp size-of second) fields)) fields))
|
||||||
(filter (fn [[_ [_ field-type]]] (not (and (vector? field-type) (= "padding" (name (first field-type)))))))))
|
(filter (fn [[_ [_ field-type]]] (not (and (vector? field-type) (= "padding" (name (first field-type)))))))))
|
||||||
|
|
||||||
(defn register-new-struct-deserialization [typename [_struct fields]]
|
(defn register-new-struct-deserialization [typename [_struct fields]]
|
||||||
(let [typelist (typelist typename fields)]
|
(defmethod generate-deserialize typename [_type global-offset segment-source-form]
|
||||||
(defmethod generate-deserialize typename [_type global-offset segment-source-form]
|
(->> (typelist fields)
|
||||||
(->> typelist
|
(map-indexed
|
||||||
(map-indexed
|
(fn [index [offset [_ field-type]]]
|
||||||
(fn [index [offset [_ field-type]]]
|
(generate-deserialize field-type (+ global-offset offset) segment-source-form)))
|
||||||
(generate-deserialize field-type (+ global-offset offset) segment-source-form)))
|
(cons (symbol (str (name typename) "."))))))
|
||||||
(cons (symbol (str (name typename) ".")))))))
|
|
||||||
|
|
||||||
(defmulti generate-serialize (fn [& xs] (if (vector? (first xs)) (ffirst xs) (first xs))))
|
(defmulti generate-serialize (fn [& xs] (if (vector? (first xs)) (ffirst xs) (first xs))))
|
||||||
|
|
||||||
|
|
@ -1944,10 +1943,9 @@
|
||||||
(generate-serialize-vector-as-array member-type length source-form offset segment-source-form)))
|
(generate-serialize-vector-as-array member-type length source-form offset segment-source-form)))
|
||||||
|
|
||||||
(defn register-new-struct-serialization [typename [_struct fields]]
|
(defn register-new-struct-serialization [typename [_struct fields]]
|
||||||
(let [typelist (typelist typename fields)
|
(let [fieldnames (filter #(not= "padding" (name %)) (map first fields))]
|
||||||
fieldnames (filter #(not= "padding" (name %)) (map first fields))]
|
|
||||||
(defmethod generate-serialize typename [_type source-form global-offset segment-source-form]
|
(defmethod generate-serialize typename [_type source-form global-offset segment-source-form]
|
||||||
(->> typelist
|
(->> (typelist fields)
|
||||||
(map-indexed
|
(map-indexed
|
||||||
(fn [index [offset [_ field-type]]]
|
(fn [index [offset [_ field-type]]]
|
||||||
(generate-serialize field-type (list (symbol (str "." (name (nth fieldnames index)))) 'source-obj) (if (number? global-offset) (+ global-offset offset) `(+ ~global-offset ~offset)) segment-source-form)))
|
(generate-serialize field-type (list (symbol (str "." (name (nth fieldnames index)))) 'source-obj) (if (number? global-offset) (+ global-offset offset) `(+ ~global-offset ~offset)) segment-source-form)))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue