@@ -12,8 +12,8 @@ module Streamly.Internal.Data.Serialize.TH.RecHeader
12 ( mkSerializeExpr
12 ( mkSerializeExpr
13 , mkDeserializeExpr
13 , mkDeserializeExpr
14 , mkSizeOfExpr
14 , mkSizeOfExpr
15− , conUpdateFuncExpr
15+ , conUpdateFuncDec
16− , mkDeserializeKeysExpr
16+ , mkDeserializeKeysDec
19--------------------------------------------------------------------------------
19--------------------------------------------------------------------------------
@@ -255,8 +255,8 @@ deserializeWithSize ::
255 Serialize a => Int -> MutableByteArray -> Int -> IO (Int, a)
255 Serialize a => Int -> MutableByteArray -> Int -> IO (Int, a)
256deserializeWithSize off arr endOff = deserialize (off + 4) arr endOff
256deserializeWithSize off arr endOff = deserialize (off + 4) arr endOff
258−conUpdateFuncExpr :: Name -> Type -> [Field] -> Q [Dec]
258+conUpdateFuncDec :: Name -> Type -> [Field] -> Q [Dec]
259−conUpdateFuncExpr funcName headTy fields = do
259+conUpdateFuncDec funcName headTy fields = do
260 prevRec <- newName "prevRec"
260 prevRec <- newName "prevRec"
261 curOff <- newName "curOff"
261 curOff <- newName "curOff"
262 endOff <- newName "endOff"
262 endOff <- newName "endOff"
@@ -317,20 +317,36 @@ conUpdateFuncExpr funcName headTy fields = do
317 , $(varE newOff))|])
317 , $(varE newOff))|])
320−mkDeserializeKeysExpr ::
321− Name -> Name -> Name -> Name -> Name -> SimpleDataCon -> Q Exp
320+mkDeserializeKeysDec :: Name -> Name -> SimpleDataCon -> Q [Dec]
322−mkDeserializeKeysExpr
323− hOff finalOff arr endOff updateFunc (SimpleDataCon cname fields) = do
321+mkDeserializeKeysDec funcName updateFunc (SimpleDataCon cname fields) = do
324−
322+ hOff <- newName "hOff"
323+ finalOff <- newName "finalOff"
324+ arr <- newName "arr"
325+ endOff <- newName "endOff"
325− [|do (dataOff, hlist :: CompactList (CompactList Word8)) <-
327+ [|do (dataOff, hlist :: CompactList (CompactList Word8)) <-
326− deserialize $(varE hOff) $(varE arr) $(varE endOff)
328+ deserialize $(varE hOff) $(varE arr) $(varE endOff)
327− let keys = wListToString . unCompactList <$> unCompactList hlist
329+ let keys = wListToString . unCompactList <$> unCompactList hlist
328− (finalRec, _) <-
330+ (finalRec, _) <-
330− ($(varE updateFunc) $(varE arr) $(varE endOff))
332+ ($(varE updateFunc) $(varE arr) $(varE endOff))
331− ($(emptyConExpr), dataOff)
333+ ($(emptyConExpr), dataOff)
333− pure ($(varE finalOff), finalRec)|]
335+ pure ($(varE finalOff), finalRec)|]
337+ [ PragmaD (InlineP funcName NoInline FunLike AllPhases)
@@ -362,9 +378,13 @@ mkDeserializeExpr initialOff endOff deserializeWithKeys con = do
362 else $(varE deserializeWithKeys)
378 else $(varE deserializeWithKeys)
363 $(varE hOff)
379 $(varE hOff)
364 ($(varE initialOff) + w32_int encLen)
380 ($(varE initialOff) + w32_int encLen)
365 else $(varE deserializeWithKeys)
383 else $(varE deserializeWithKeys)
366 $(varE hOff)
384 $(varE hOff)
367− ($(varE initialOff) + w32_int encLen)|]
385+ ($(varE initialOff) + w32_int encLen)