@@ -33,7 +33,9 @@ import Streamly.Internal.Data.Unbox.TH
33 , plainInstanceD
33 , plainInstanceD
34 , reifyDataType
34 , reifyDataType
36import Streamly.Internal.Data.Serialize.TH.Bottom
37import Streamly.Internal.Data.Serialize.TH.Bottom
38+import Streamly.Internal.Data.Serialize.TH.Common
38--------------------------------------------------------------------------------
40--------------------------------------------------------------------------------
39-- Domain specific helpers
41-- Domain specific helpers
@@ -158,35 +160,6 @@ mkSizeDec (Config {..}) headTy cons = do
159--------------------------------------------------------------------------------
161--------------------------------------------------------------------------------
161−mkDeserializeExprOne :: SimpleDataCon -> Q Exp
162−mkDeserializeExprOne (SimpleDataCon cname fields) =
164− -- Only tag is serialized for unit fields, no actual value
165− [] -> [|pure ($(varE (mkName "i0")), $(conE cname))|]
169− [ fmap makeBind [0 .. (numFields - 1)]
174− [ varE (makeI numFields)
178− [0 .. (numFields - 1)]))
183− numFields = length fields
186− (tupP [varP (makeI (i + 1)), varP (makeA i)])
187− [|deserialize $(varE (makeI i)) $(varE _arr) $(varE _endOffset)|]
190mkDeserializeExpr :: Bool -> Type -> TypeOfType -> Q Exp
163mkDeserializeExpr :: Bool -> Type -> TypeOfType -> Q Exp
191mkDeserializeExpr True headTy tyOfTy =
164mkDeserializeExpr True headTy tyOfTy =
192 case tyOfTy of
165 case tyOfTy of
@@ -286,22 +259,6 @@ mkSerializeExprTag tagType tagVal =
286 $(varE _arr)
259 $(varE _arr)
287 $((sigE (litE (IntegerL (fromIntegral tagVal))) (conT tagType)))|]
260 $((sigE (litE (IntegerL (fromIntegral tagVal))) (conT tagType)))|]
289−mkSerializeExprFields :: [Field] -> Q Exp
290−mkSerializeExprFields fields =
292− -- Unit constructor, do nothing just tag is enough
293− [] -> [|pure ($(varE (mkName "i0")))|]
296− (fmap makeBind [0 .. (numFields - 1)] ++
297− [noBindS ([|pure $(varE (makeI numFields))|])])
299− numFields = length fields
302− (varP (makeI (i + 1)))
303− [|serialize $(varE (makeI i)) $(varE _arr) $(varE (mkFieldName i))|]
305mkSerializeExpr :: Bool -> TypeOfType -> Q Exp
262mkSerializeExpr :: Bool -> TypeOfType -> Q Exp
306mkSerializeExpr True tyOfTy =
263mkSerializeExpr True tyOfTy =
307 case tyOfTy of
264 case tyOfTy of