module Test.Util.Serialisation.CBOR
( definite
, definiteMap
, indefinite
, indefiniteMap
) where
import qualified Codec.CBOR.Encoding as CBOR
definite :: [CBOR.Encoding] -> CBOR.Encoding
definite :: [Encoding] -> Encoding
definite [Encoding]
xs = Word -> Encoding
CBOR.encodeListLen (Int -> Word
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word) -> Int -> Word
forall a b. (a -> b) -> a -> b
$ [Encoding] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Encoding]
xs) Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> [Encoding] -> Encoding
forall a. Monoid a => [a] -> a
mconcat [Encoding]
xs
indefinite :: [CBOR.Encoding] -> CBOR.Encoding
indefinite :: [Encoding] -> Encoding
indefinite [Encoding]
xs = Encoding
CBOR.encodeListLenIndef Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> [Encoding] -> Encoding
forall a. Monoid a => [a] -> a
mconcat [Encoding]
xs Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Encoding
CBOR.encodeBreak
definiteMap :: [CBOR.Encoding] -> CBOR.Encoding
definiteMap :: [Encoding] -> Encoding
definiteMap [Encoding]
kvs = Word -> Encoding
CBOR.encodeMapLen (Int -> Word
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word) -> Int -> Word
forall a b. (a -> b) -> a -> b
$ [Encoding] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Encoding]
kvs) Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> [Encoding] -> Encoding
forall a. Monoid a => [a] -> a
mconcat [Encoding]
kvs
indefiniteMap :: [CBOR.Encoding] -> CBOR.Encoding
indefiniteMap :: [Encoding] -> Encoding
indefiniteMap [Encoding]
kvs = Encoding
CBOR.encodeMapLenIndef Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> [Encoding] -> Encoding
forall a. Monoid a => [a] -> a
mconcat [Encoding]
kvs Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Encoding
CBOR.encodeBreak