newtype for expressions to serialize in vectors
This commit is contained in:
@@ -326,6 +326,12 @@ instance Serialize Index where
|
|||||||
put (Index idx) = putULEB128 idx
|
put (Index idx) = putULEB128 idx
|
||||||
get = Index <$> getULEB128 32
|
get = Index <$> getULEB128 32
|
||||||
|
|
||||||
|
newtype Expr = Expr { unExpr :: Expression } deriving (Show, Eq)
|
||||||
|
|
||||||
|
instance Serialize Expr where
|
||||||
|
put (Expr expr) = putExpression expr
|
||||||
|
get = Expr <$> getExpression
|
||||||
|
|
||||||
instance Serialize MemArg where
|
instance Serialize MemArg where
|
||||||
put MemArg { align, offset } = putULEB128 align >> putULEB128 offset
|
put MemArg { align, offset } = putULEB128 align >> putULEB128 offset
|
||||||
get = do
|
get = do
|
||||||
@@ -802,17 +808,18 @@ instance Serialize ElemSegment where
|
|||||||
put (ElemSegment elemType Passive elements) = do
|
put (ElemSegment elemType Passive elements) = do
|
||||||
putWord8 0x05
|
putWord8 0x05
|
||||||
put elemType
|
put elemType
|
||||||
putVec $ map putExpression elements
|
putVec $ map Expr elements
|
||||||
put (ElemSegment elemType (Active tableIndex offset) elements) = do
|
put (ElemSegment elemType (Active tableIndex offset) elements) = do
|
||||||
putWord8 0x06
|
putWord8 0x06
|
||||||
putULEB128 tableIndex
|
putULEB128 tableIndex
|
||||||
putExpression offset
|
putExpression offset
|
||||||
put elemType
|
put elemType
|
||||||
putVec $ map putExpression elements
|
putVec $ map Expr elements
|
||||||
put (ElemSegment elemType Declarative elements) = do
|
put (ElemSegment elemType Declarative elements) = do
|
||||||
putWord8 0x07
|
putWord8 0x07
|
||||||
put elemType
|
put elemType
|
||||||
putVec $ map putExpression elements
|
putVec $ map Expr elements
|
||||||
|
|
||||||
get = do
|
get = do
|
||||||
op <- getWord8
|
op <- getWord8
|
||||||
let funcIndexes = map ((:[]) . RefFunc . unIndex) <$> getVec
|
let funcIndexes = map ((:[]) . RefFunc . unIndex) <$> getVec
|
||||||
|
|||||||
Reference in New Issue
Block a user