{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module DBus.Internal.Types where
import Control.DeepSeq
import Control.Monad (liftM, when, (>=>))
import Control.Monad.Catch
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BS8
import qualified Data.ByteString.Lazy as BL
import Data.Char (ord)
import Data.Coerce
import Data.Int
import Data.List (intercalate)
import Data.List.Split (splitOn)
import qualified Data.Map
import Data.Map (Map)
import qualified Data.String
import qualified Data.Text
import Data.Text (Text)
import qualified Data.Text.Lazy
import Data.Typeable (Typeable, Proxy(..))
import qualified Data.Vector
import Data.Vector (Vector)
import Data.Word
import GHC.Generics
import qualified Language.Haskell.TH.Lift as THL
import System.Posix.Types (Fd)
import Text.ParserCombinators.Parsec ((<|>), oneOf)
import qualified Text.ParserCombinators.Parsec as Parsec
data Type
= TypeBoolean
| TypeWord8
| TypeWord16
| TypeWord32
| TypeWord64
| TypeInt16
| TypeInt32
| TypeInt64
| TypeDouble
| TypeUnixFd
| TypeString
| TypeSignature
| TypeObjectPath
| TypeVariant
| TypeArray Type
| TypeDictionary Type Type
| TypeStructure [Type]
deriving (Type -> Type -> Bool
(Type -> Type -> Bool) -> (Type -> Type -> Bool) -> Eq Type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Type -> Type -> Bool
$c/= :: Type -> Type -> Bool
== :: Type -> Type -> Bool
$c== :: Type -> Type -> Bool
Eq, Eq Type
Eq Type =>
(Type -> Type -> Ordering)
-> (Type -> Type -> Bool)
-> (Type -> Type -> Bool)
-> (Type -> Type -> Bool)
-> (Type -> Type -> Bool)
-> (Type -> Type -> Type)
-> (Type -> Type -> Type)
-> Ord Type
Type -> Type -> Bool
Type -> Type -> Ordering
Type -> Type -> Type
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Type -> Type -> Type
$cmin :: Type -> Type -> Type
max :: Type -> Type -> Type
$cmax :: Type -> Type -> Type
>= :: Type -> Type -> Bool
$c>= :: Type -> Type -> Bool
> :: Type -> Type -> Bool
$c> :: Type -> Type -> Bool
<= :: Type -> Type -> Bool
$c<= :: Type -> Type -> Bool
< :: Type -> Type -> Bool
$c< :: Type -> Type -> Bool
compare :: Type -> Type -> Ordering
$ccompare :: Type -> Type -> Ordering
$cp1Ord :: Eq Type
Ord, (forall x. Type -> Rep Type x)
-> (forall x. Rep Type x -> Type) -> Generic Type
forall x. Rep Type x -> Type
forall x. Type -> Rep Type x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Type x -> Type
$cfrom :: forall x. Type -> Rep Type x
Generic)
instance NFData Type
instance Show Type where
showsPrec :: Int -> Type -> ShowS
showsPrec d :: Int
d = String -> ShowS
showString (String -> ShowS) -> (Type -> String) -> Type -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Type -> String
showType (Int
d Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10)
showType :: Bool -> Type -> String
showType :: Bool -> Type -> String
showType paren :: Bool
paren t :: Type
t = case Type
t of
TypeBoolean -> "Bool"
TypeWord8 -> "Word8"
TypeWord16 -> "Word16"
TypeWord32 -> "Word32"
TypeWord64 -> "Word64"
TypeInt16 -> "Int16"
TypeInt32 -> "Int32"
TypeInt64 -> "Int64"
TypeDouble -> "Double"
TypeUnixFd -> "UnixFd"
TypeString -> "String"
TypeSignature -> "Signature"
TypeObjectPath -> "ObjectPath"
TypeVariant -> "Variant"
TypeArray t' :: Type
t' -> [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ["[", Type -> String
forall a. Show a => a -> String
show Type
t', "]"]
TypeDictionary kt :: Type
kt vt :: Type
vt -> Bool -> ShowS -> ShowS
showParen Bool
paren (
String -> ShowS
showString "Dict " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Type -> ShowS
forall a. Show a => a -> ShowS
shows Type
kt ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
String -> ShowS
showString " " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Int -> Type -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 Type
vt) ""
TypeStructure ts :: [Type]
ts -> [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
["(", String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate ", " ((Type -> String) -> [Type] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map Type -> String
forall a. Show a => a -> String
show [Type]
ts), ")"]
newtype Signature = Signature [Type]
deriving (Signature -> Signature -> Bool
(Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool) -> Eq Signature
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Signature -> Signature -> Bool
$c/= :: Signature -> Signature -> Bool
== :: Signature -> Signature -> Bool
$c== :: Signature -> Signature -> Bool
Eq, Eq Signature
Eq Signature =>
(Signature -> Signature -> Ordering)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Signature)
-> (Signature -> Signature -> Signature)
-> Ord Signature
Signature -> Signature -> Bool
Signature -> Signature -> Ordering
Signature -> Signature -> Signature
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Signature -> Signature -> Signature
$cmin :: Signature -> Signature -> Signature
max :: Signature -> Signature -> Signature
$cmax :: Signature -> Signature -> Signature
>= :: Signature -> Signature -> Bool
$c>= :: Signature -> Signature -> Bool
> :: Signature -> Signature -> Bool
$c> :: Signature -> Signature -> Bool
<= :: Signature -> Signature -> Bool
$c<= :: Signature -> Signature -> Bool
< :: Signature -> Signature -> Bool
$c< :: Signature -> Signature -> Bool
compare :: Signature -> Signature -> Ordering
$ccompare :: Signature -> Signature -> Ordering
$cp1Ord :: Eq Signature
Ord, Signature -> ()
(Signature -> ()) -> NFData Signature
forall a. (a -> ()) -> NFData a
rnf :: Signature -> ()
$crnf :: Signature -> ()
NFData)
signatureTypes :: Signature -> [Type]
signatureTypes :: Signature -> [Type]
signatureTypes (Signature types :: [Type]
types) = [Type]
types
instance Show Signature where
showsPrec :: Int -> Signature -> ShowS
showsPrec d :: Int
d sig :: Signature
sig = Bool -> ShowS -> ShowS
showParen (Int
d Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (ShowS -> ShowS) -> ShowS -> ShowS
forall a b. (a -> b) -> a -> b
$
String -> ShowS
showString "Signature " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
String -> ShowS
forall a. Show a => a -> ShowS
shows (Signature -> String
formatSignature Signature
sig)
formatSignature :: Signature -> String
formatSignature :: Signature -> String
formatSignature = (Type -> String) -> [Type] -> String
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap Type -> String
typeCode ([Type] -> String) -> (Signature -> [Type]) -> Signature -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Signature -> [Type]
signatureTypes
typeCode :: Type -> String
typeCode :: Type -> String
typeCode TypeBoolean = "b"
typeCode TypeWord8 = "y"
typeCode TypeWord16 = "q"
typeCode TypeWord32 = "u"
typeCode TypeWord64 = "t"
typeCode TypeInt16 = "n"
typeCode TypeInt32 = "i"
typeCode TypeInt64 = "x"
typeCode TypeDouble = "d"
typeCode TypeUnixFd = "h"
typeCode TypeString = "s"
typeCode TypeSignature = "g"
typeCode TypeObjectPath = "o"
typeCode TypeVariant = "v"
typeCode (TypeArray t :: Type
t) = 'a' Char -> ShowS
forall a. a -> [a] -> [a]
: Type -> String
typeCode Type
t
typeCode (TypeDictionary kt :: Type
kt vt :: Type
vt) = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[ "a{", Type -> String
typeCode Type
kt , Type -> String
typeCode Type
vt, "}"]
typeCode (TypeStructure ts :: [Type]
ts) = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
["(", (Type -> String) -> [Type] -> String
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap Type -> String
typeCode [Type]
ts, ")"]
instance Data.String.IsString Signature where
fromString :: String -> Signature
fromString = String -> (String -> Maybe Signature) -> String -> Signature
forall a. String -> (String -> Maybe a) -> String -> a
forceParse "signature" String -> Maybe Signature
forall (m :: * -> *). MonadThrow m => String -> m Signature
parseSignature
signature :: MonadThrow m => [Type] -> m Signature
signature :: [Type] -> m Signature
signature = [Type] -> m Signature
forall (m :: * -> *). MonadThrow m => [Type] -> m Signature
check where
check :: [Type] -> m Signature
check ts :: [Type]
ts = if [Type] -> Int
sumLen [Type]
ts Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 255
then IOError -> m Signature
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m Signature) -> IOError -> m Signature
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "invalid signature"
else Signature -> m Signature
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([Type] -> Signature
Signature [Type]
ts)
sumLen :: [Type] -> Int
sumLen :: [Type] -> Int
sumLen = [Int] -> Int
forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum ([Int] -> Int) -> ([Type] -> [Int]) -> [Type] -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Type -> Int) -> [Type] -> [Int]
forall a b. (a -> b) -> [a] -> [b]
map Type -> Int
len
len :: Type -> Int
len (TypeArray t :: Type
t) = 1 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Type -> Int
len Type
t
len (TypeDictionary kt :: Type
kt vt :: Type
vt)
| Type -> Bool
typeIsAtomic Type
kt = 3 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Type -> Int
len Type
kt Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Type -> Int
len Type
vt
| Bool
otherwise = 256
len (TypeStructure []) = 256
len (TypeStructure ts :: [Type]
ts) = 2 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ [Type] -> Int
sumLen [Type]
ts
len _ = 1
typeIsAtomic :: Type -> Bool
typeIsAtomic TypeVariant = Bool
False
typeIsAtomic TypeArray{} = Bool
False
typeIsAtomic TypeDictionary{} = Bool
False
typeIsAtomic TypeStructure{} = Bool
False
typeIsAtomic _ = Bool
True
signature_ :: [Type] -> Signature
signature_ :: [Type] -> Signature
signature_ ts :: [Type]
ts = case [Type] -> Maybe Signature
forall (m :: * -> *). MonadThrow m => [Type] -> m Signature
signature [Type]
ts of
Just sig :: Signature
sig -> Signature
sig
Nothing -> String -> Signature
forall a. HasCallStack => String -> a
error ("invalid signature: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [Type] -> String
forall a. Show a => a -> String
show [Type]
ts)
parseSignature :: MonadThrow m => String -> m Signature
parseSignature :: String -> m Signature
parseSignature s :: String
s = do
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 255) (m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ IOError -> m ()
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m ()) -> IOError -> m ()
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "string too long"
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when ((Char -> Bool) -> String -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (\c :: Char
c -> Char -> Int
ord Char
c Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0x7F) String
s) (m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ IOError -> m ()
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m ()) -> IOError -> m ()
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "invalid signature"
ByteString -> m Signature
forall (m :: * -> *). MonadThrow m => ByteString -> m Signature
parseSignatureBytes (String -> ByteString
BS8.pack String
s)
parseSignatureBytes :: MonadThrow m => BS.ByteString -> m Signature
parseSignatureBytes :: ByteString -> m Signature
parseSignatureBytes bytes :: ByteString
bytes =
case ByteString -> Int
BS.length ByteString
bytes of
0 -> Signature -> m Signature
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([Type] -> Signature
Signature [])
1 -> ByteString -> m Signature
forall (m :: * -> *). MonadThrow m => ByteString -> m Signature
parseSigFast ByteString
bytes
len :: Int
len | Int
len Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= 255 -> ByteString -> m Signature
forall (m :: * -> *). MonadThrow m => ByteString -> m Signature
parseSigFull ByteString
bytes
_ -> IOError -> m Signature
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m Signature) -> IOError -> m Signature
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "string too long"
parseSigFast :: MonadThrow m => BS.ByteString -> m Signature
parseSigFast :: ByteString -> m Signature
parseSigFast bytes :: ByteString
bytes =
let byte :: Word8
byte = ByteString -> Word8
BS.head ByteString
bytes
in Int -> (Type -> m Signature) -> m Signature -> m Signature
forall a. Int -> (Type -> a) -> a -> a
parseAtom (Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte)
(\t :: Type
t -> Signature -> m Signature
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([Type] -> Signature
Signature [Type
t]))
(case Word8
byte of
0x76 -> Signature -> m Signature
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([Type] -> Signature
Signature [Type
TypeVariant])
_ -> IOError -> m Signature
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m Signature) -> IOError -> m Signature
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "invalid signature")
parseAtom :: Int -> (Type -> a) -> a -> a
parseAtom :: Int -> (Type -> a) -> a -> a
parseAtom byte :: Int
byte yes :: Type -> a
yes no :: a
no = case Int
byte of
0x62 -> Type -> a
yes Type
TypeBoolean
0x6E -> Type -> a
yes Type
TypeInt16
0x69 -> Type -> a
yes Type
TypeInt32
0x78 -> Type -> a
yes Type
TypeInt64
0x79 -> Type -> a
yes Type
TypeWord8
0x71 -> Type -> a
yes Type
TypeWord16
0x75 -> Type -> a
yes Type
TypeWord32
0x74 -> Type -> a
yes Type
TypeWord64
0x64 -> Type -> a
yes Type
TypeDouble
0x68 -> Type -> a
yes Type
TypeUnixFd
0x73 -> Type -> a
yes Type
TypeString
0x67 -> Type -> a
yes Type
TypeSignature
0x6F -> Type -> a
yes Type
TypeObjectPath
_ -> a
no
{-# INLINE parseAtom #-}
data SigParseError = SigParseError
deriving (Int -> SigParseError -> ShowS
[SigParseError] -> ShowS
SigParseError -> String
(Int -> SigParseError -> ShowS)
-> (SigParseError -> String)
-> ([SigParseError] -> ShowS)
-> Show SigParseError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SigParseError] -> ShowS
$cshowList :: [SigParseError] -> ShowS
show :: SigParseError -> String
$cshow :: SigParseError -> String
showsPrec :: Int -> SigParseError -> ShowS
$cshowsPrec :: Int -> SigParseError -> ShowS
Show, Typeable)
instance Exception SigParseError
peekWord8AsInt :: BS.ByteString -> Int -> Int
peekWord8AsInt :: ByteString -> Int -> Int
peekWord8AsInt str :: ByteString
str i :: Int
i = Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word8 -> Int) -> Word8 -> Int
forall a b. (a -> b) -> a -> b
$ ByteString -> Int -> Word8
BS.index ByteString
str Int
i
parseSigFull :: MonadThrow m => BS.ByteString -> m Signature
parseSigFull :: ByteString -> m Signature
parseSigFull bytes :: ByteString
bytes = [Type] -> Signature
Signature ([Type] -> Signature) -> m [Type] -> m Signature
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Type] -> Int -> m [Type]
mainLoop [] 0
where
len :: Int
len = ByteString -> Int
BS.length ByteString
bytes
mainLoop :: [Type] -> Int -> m [Type]
mainLoop acc :: [Type]
acc ii :: Int
ii | Int
ii Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
len = [Type] -> m [Type]
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([Type] -> [Type]
forall a. [a] -> [a]
reverse [Type]
acc)
mainLoop acc :: [Type]
acc ii :: Int
ii = do
let c :: Int
c = ByteString -> Int -> Int
peekWord8AsInt ByteString
bytes Int
ii
let next :: Type -> m [Type]
next t :: Type
t = [Type] -> Int -> m [Type]
mainLoop (Type
t Type -> [Type] -> [Type]
forall a. a -> [a] -> [a]
: [Type]
acc) (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
Int -> (Type -> m [Type]) -> m [Type] -> m [Type]
forall a. Int -> (Type -> a) -> a -> a
parseAtom Int
c Type -> m [Type]
next (m [Type] -> m [Type]) -> m [Type] -> m [Type]
forall a b. (a -> b) -> a -> b
$ case Int
c of
0x76 -> Type -> m [Type]
next Type
TypeVariant
0x28 -> do
(ii' :: Int
ii', t :: Type
t) <- Int -> m (Int, Type)
structure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
[Type] -> Int -> m [Type]
mainLoop (Type
t Type -> [Type] -> [Type]
forall a. a -> [a] -> [a]
: [Type]
acc) Int
ii'
0x61 -> do
(ii' :: Int
ii', t :: Type
t) <- Int -> m (Int, Type)
array (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
[Type] -> Int -> m [Type]
mainLoop (Type
t Type -> [Type] -> [Type]
forall a. a -> [a] -> [a]
: [Type]
acc) Int
ii'
_ -> SigParseError -> m [Type]
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
structure :: Int -> m (Int, Type)
structure = [Type] -> Int -> m (Int, Type)
loop [] where
loop :: [Type] -> Int -> m (Int, Type)
loop _ ii :: Int
ii | Int
ii Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
len = SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
loop acc :: [Type]
acc ii :: Int
ii = do
let c :: Int
c = ByteString -> Int -> Int
peekWord8AsInt ByteString
bytes Int
ii
let next :: Type -> m (Int, Type)
next t :: Type
t = [Type] -> Int -> m (Int, Type)
loop (Type
t Type -> [Type] -> [Type]
forall a. a -> [a] -> [a]
: [Type]
acc) (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
Int -> (Type -> m (Int, Type)) -> m (Int, Type) -> m (Int, Type)
forall a. Int -> (Type -> a) -> a -> a
parseAtom Int
c Type -> m (Int, Type)
next (m (Int, Type) -> m (Int, Type)) -> m (Int, Type) -> m (Int, Type)
forall a b. (a -> b) -> a -> b
$ case Int
c of
0x76 -> Type -> m (Int, Type)
next Type
TypeVariant
0x28 -> do
(ii' :: Int
ii', t :: Type
t) <- Int -> m (Int, Type)
structure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
[Type] -> Int -> m (Int, Type)
loop (Type
t Type -> [Type] -> [Type]
forall a. a -> [a] -> [a]
: [Type]
acc) Int
ii'
0x61 -> do
(ii' :: Int
ii', t :: Type
t) <- Int -> m (Int, Type)
array (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
[Type] -> Int -> m (Int, Type)
loop (Type
t Type -> [Type] -> [Type]
forall a. a -> [a] -> [a]
: [Type]
acc) Int
ii'
0x29 -> case [Type]
acc of
[] -> SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
_ -> (Int, Type) -> m (Int, Type)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1, [Type] -> Type
TypeStructure ([Type] -> [Type]
forall a. [a] -> [a]
reverse [Type]
acc))
_ -> SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
array :: Int -> m (Int, Type)
array ii :: Int
ii | Int
ii Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
len = SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
array ii :: Int
ii = do
let c :: Int
c = ByteString -> Int -> Int
peekWord8AsInt ByteString
bytes Int
ii
let next :: Type -> f (Int, Type)
next t :: Type
t = (Int, Type) -> f (Int, Type)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1, Type -> Type
TypeArray Type
t)
Int -> (Type -> m (Int, Type)) -> m (Int, Type) -> m (Int, Type)
forall a. Int -> (Type -> a) -> a -> a
parseAtom Int
c Type -> m (Int, Type)
forall (f :: * -> *). Applicative f => Type -> f (Int, Type)
next (m (Int, Type) -> m (Int, Type)) -> m (Int, Type) -> m (Int, Type)
forall a b. (a -> b) -> a -> b
$ case Int
c of
0x76 -> Type -> m (Int, Type)
forall (f :: * -> *). Applicative f => Type -> f (Int, Type)
next Type
TypeVariant
0x7B -> Int -> m (Int, Type)
dict (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
0x28 -> do
(ii' :: Int
ii', t :: Type
t) <- Int -> m (Int, Type)
structure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
(Int, Type) -> m (Int, Type)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
ii', Type -> Type
TypeArray Type
t)
0x61 -> do
(ii' :: Int
ii', t :: Type
t) <- Int -> m (Int, Type)
array (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
(Int, Type) -> m (Int, Type)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
ii', Type -> Type
TypeArray Type
t)
_ -> SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
dict :: Int -> m (Int, Type)
dict ii :: Int
ii | Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
len = SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
dict ii :: Int
ii = do
let c1 :: Int
c1 = ByteString -> Int -> Int
peekWord8AsInt ByteString
bytes Int
ii
let c2 :: Int
c2 = ByteString -> Int -> Int
peekWord8AsInt ByteString
bytes (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1)
let next :: b -> f (Int, b)
next t :: b
t = (Int, b) -> f (Int, b)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 2, b
t)
(ii' :: Int
ii', t2 :: Type
t2) <- Int -> (Type -> m (Int, Type)) -> m (Int, Type) -> m (Int, Type)
forall a. Int -> (Type -> a) -> a -> a
parseAtom Int
c2 Type -> m (Int, Type)
forall (f :: * -> *) b. Applicative f => b -> f (Int, b)
next (m (Int, Type) -> m (Int, Type)) -> m (Int, Type) -> m (Int, Type)
forall a b. (a -> b) -> a -> b
$ case Int
c2 of
0x76 -> Type -> m (Int, Type)
forall (f :: * -> *) b. Applicative f => b -> f (Int, b)
next Type
TypeVariant
0x28 -> Int -> m (Int, Type)
structure (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 2)
0x61 -> Int -> m (Int, Type)
array (Int
ii Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 2)
_ -> SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
if Int
ii' Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
len
then SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
else do
let c3 :: Int
c3 = ByteString -> Int -> Int
peekWord8AsInt ByteString
bytes Int
ii'
if Int
c3 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== 0x7D
then do
Type
t1 <- Int -> (Type -> m Type) -> m Type -> m Type
forall a. Int -> (Type -> a) -> a -> a
parseAtom Int
c1 Type -> m Type
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SigParseError -> m Type
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError)
(Int, Type) -> m (Int, Type)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
ii' Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 1, Type -> Type -> Type
TypeDictionary Type
t1 Type
t2)
else SigParseError -> m (Int, Type)
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM SigParseError
SigParseError
extractFromVariant :: IsValue a => Variant -> Maybe a
(Variant (ValueVariant v :: Variant
v)) = Variant -> Maybe a
forall a. IsValue a => Variant -> Maybe a
extractFromVariant Variant
v
extractFromVariant v :: Variant
v = Variant -> Maybe a
forall a. IsVariant a => Variant -> Maybe a
fromVariant Variant
v
typeOf :: forall a. IsValue a => a -> Type
typeOf :: a -> Type
typeOf _ = Proxy a -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a
forall k (t :: k). Proxy t
Proxy :: Proxy a)
class IsVariant a where
toVariant :: a -> Variant
fromVariant :: Variant -> Maybe a
class IsVariant a => IsValue a where
typeOf_ :: Proxy a -> Type
toValue :: a -> Value
fromValue :: Value -> Maybe a
class IsValue a => IsAtom a where
toAtom :: a -> Atom
fromAtom :: Atom -> Maybe a
newtype Variant = Variant Value
deriving (Variant -> Variant -> Bool
(Variant -> Variant -> Bool)
-> (Variant -> Variant -> Bool) -> Eq Variant
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Variant -> Variant -> Bool
$c/= :: Variant -> Variant -> Bool
== :: Variant -> Variant -> Bool
$c== :: Variant -> Variant -> Bool
Eq)
data Value
= ValueAtom Atom
| ValueVariant Variant
| ValueBytes BS.ByteString
| ValueVector Type (Vector Value)
| ValueMap Type Type (Map Atom Value)
| ValueStructure [Value]
deriving (Int -> Value -> ShowS
[Value] -> ShowS
Value -> String
(Int -> Value -> ShowS)
-> (Value -> String) -> ([Value] -> ShowS) -> Show Value
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Value] -> ShowS
$cshowList :: [Value] -> ShowS
show :: Value -> String
$cshow :: Value -> String
showsPrec :: Int -> Value -> ShowS
$cshowsPrec :: Int -> Value -> ShowS
Show)
data Atom
= AtomBool Bool
| AtomWord8 Word8
| AtomWord16 Word16
| AtomWord32 Word32
| AtomWord64 Word64
| AtomInt16 Int16
| AtomInt32 Int32
| AtomInt64 Int64
| AtomDouble Double
| AtomUnixFd Fd
| AtomText Text
| AtomSignature Signature
| AtomObjectPath ObjectPath
deriving (Int -> Atom -> ShowS
[Atom] -> ShowS
Atom -> String
(Int -> Atom -> ShowS)
-> (Atom -> String) -> ([Atom] -> ShowS) -> Show Atom
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Atom] -> ShowS
$cshowList :: [Atom] -> ShowS
show :: Atom -> String
$cshow :: Atom -> String
showsPrec :: Int -> Atom -> ShowS
$cshowsPrec :: Int -> Atom -> ShowS
Show, Atom -> Atom -> Bool
(Atom -> Atom -> Bool) -> (Atom -> Atom -> Bool) -> Eq Atom
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Atom -> Atom -> Bool
$c/= :: Atom -> Atom -> Bool
== :: Atom -> Atom -> Bool
$c== :: Atom -> Atom -> Bool
Eq, Eq Atom
Eq Atom =>
(Atom -> Atom -> Ordering)
-> (Atom -> Atom -> Bool)
-> (Atom -> Atom -> Bool)
-> (Atom -> Atom -> Bool)
-> (Atom -> Atom -> Bool)
-> (Atom -> Atom -> Atom)
-> (Atom -> Atom -> Atom)
-> Ord Atom
Atom -> Atom -> Bool
Atom -> Atom -> Ordering
Atom -> Atom -> Atom
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Atom -> Atom -> Atom
$cmin :: Atom -> Atom -> Atom
max :: Atom -> Atom -> Atom
$cmax :: Atom -> Atom -> Atom
>= :: Atom -> Atom -> Bool
$c>= :: Atom -> Atom -> Bool
> :: Atom -> Atom -> Bool
$c> :: Atom -> Atom -> Bool
<= :: Atom -> Atom -> Bool
$c<= :: Atom -> Atom -> Bool
< :: Atom -> Atom -> Bool
$c< :: Atom -> Atom -> Bool
compare :: Atom -> Atom -> Ordering
$ccompare :: Atom -> Atom -> Ordering
$cp1Ord :: Eq Atom
Ord)
instance Eq Value where
== :: Value -> Value -> Bool
(==) (ValueBytes x :: ByteString
x) y :: Value
y = case Value
y of
ValueBytes y' :: ByteString
y' -> ByteString
x ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== ByteString
y'
ValueVector TypeWord8 y' :: Vector Value
y' -> ByteString
x ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== Vector Value -> ByteString
vectorToBytes Vector Value
y'
_ -> Bool
False
(==) (ValueVector TypeWord8 x :: Vector Value
x) y :: Value
y = case Value
y of
ValueBytes y' :: ByteString
y' -> Vector Value -> ByteString
vectorToBytes Vector Value
x ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== ByteString
y'
ValueVector TypeWord8 y' :: Vector Value
y' -> Vector Value
x Vector Value -> Vector Value -> Bool
forall a. Eq a => a -> a -> Bool
== Vector Value
y'
_ -> Bool
False
(==) (ValueAtom x :: Atom
x) (ValueAtom y :: Atom
y) = Atom
x Atom -> Atom -> Bool
forall a. Eq a => a -> a -> Bool
== Atom
y
(==) (ValueVariant x :: Variant
x) (ValueVariant y :: Variant
y) = Variant
x Variant -> Variant -> Bool
forall a. Eq a => a -> a -> Bool
== Variant
y
(==) (ValueVector tx :: Type
tx x :: Vector Value
x) (ValueVector ty :: Type
ty y :: Vector Value
y) = Type
tx Type -> Type -> Bool
forall a. Eq a => a -> a -> Bool
== Type
ty Bool -> Bool -> Bool
&& Vector Value
x Vector Value -> Vector Value -> Bool
forall a. Eq a => a -> a -> Bool
== Vector Value
y
(==) (ValueMap ktx :: Type
ktx vtx :: Type
vtx x :: Map Atom Value
x) (ValueMap kty :: Type
kty vty :: Type
vty y :: Map Atom Value
y) = Type
ktx Type -> Type -> Bool
forall a. Eq a => a -> a -> Bool
== Type
kty Bool -> Bool -> Bool
&& Type
vtx Type -> Type -> Bool
forall a. Eq a => a -> a -> Bool
== Type
vty Bool -> Bool -> Bool
&& Map Atom Value
x Map Atom Value -> Map Atom Value -> Bool
forall a. Eq a => a -> a -> Bool
== Map Atom Value
y
(==) (ValueStructure x :: [Value]
x) (ValueStructure y :: [Value]
y) = [Value]
x [Value] -> [Value] -> Bool
forall a. Eq a => a -> a -> Bool
== [Value]
y
(==) _ _ = Bool
False
showAtom :: Bool -> Atom -> String
showAtom :: Bool -> Atom -> String
showAtom _ (AtomBool x :: Bool
x) = Bool -> String
forall a. Show a => a -> String
show Bool
x
showAtom _ (AtomWord8 x :: Word8
x) = Word8 -> String
forall a. Show a => a -> String
show Word8
x
showAtom _ (AtomWord16 x :: Word16
x) = Word16 -> String
forall a. Show a => a -> String
show Word16
x
showAtom _ (AtomWord32 x :: Word32
x) = Word32 -> String
forall a. Show a => a -> String
show Word32
x
showAtom _ (AtomWord64 x :: Word64
x) = Word64 -> String
forall a. Show a => a -> String
show Word64
x
showAtom _ (AtomInt16 x :: Int16
x) = Int16 -> String
forall a. Show a => a -> String
show Int16
x
showAtom _ (AtomInt32 x :: Int32
x) = Int32 -> String
forall a. Show a => a -> String
show Int32
x
showAtom _ (AtomInt64 x :: Int64
x) = Int64 -> String
forall a. Show a => a -> String
show Int64
x
showAtom _ (AtomDouble x :: Double
x) = Double -> String
forall a. Show a => a -> String
show Double
x
showAtom p :: Bool
p (AtomUnixFd x :: Fd
x) = Bool -> ShowS -> ShowS
showParen Bool
p (String -> ShowS
showString "UnixFd " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Fd -> ShowS
forall a. Show a => a -> ShowS
shows Fd
x) ""
showAtom _ (AtomText x :: Text
x) = Text -> String
forall a. Show a => a -> String
show Text
x
showAtom p :: Bool
p (AtomSignature x :: Signature
x) = Int -> Signature -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec (if Bool
p then 11 else 0) Signature
x ""
showAtom p :: Bool
p (AtomObjectPath x :: ObjectPath
x) = Int -> ObjectPath -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec (if Bool
p then 11 else 0) ObjectPath
x ""
showValue :: Bool -> Value -> String
showValue :: Bool -> Value -> String
showValue p :: Bool
p (ValueAtom x :: Atom
x) = Bool -> Atom -> String
showAtom Bool
p Atom
x
showValue p :: Bool
p (ValueVariant x :: Variant
x) = Int -> Variant -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec (if Bool
p then 11 else 0) Variant
x ""
showValue _ (ValueBytes xs :: ByteString
xs) = 'b' Char -> ShowS
forall a. a -> [a] -> [a]
: ByteString -> String
forall a. Show a => a -> String
show ByteString
xs
showValue _ (ValueVector TypeWord8 xs :: Vector Value
xs) = 'b' Char -> ShowS
forall a. a -> [a] -> [a]
: ByteString -> String
forall a. Show a => a -> String
show (Vector Value -> ByteString
vectorToBytes Vector Value
xs)
showValue _ (ValueVector _ xs :: Vector Value
xs) = String -> (Value -> String) -> String -> [Value] -> String
forall a. String -> (a -> String) -> String -> [a] -> String
showThings "[" (Bool -> Value -> String
showValue Bool
False) "]" (Vector Value -> [Value]
forall a. Vector a -> [a]
Data.Vector.toList Vector Value
xs)
showValue _ (ValueMap _ _ xs :: Map Atom Value
xs) = String
-> ((Atom, Value) -> String) -> String -> [(Atom, Value)] -> String
forall a. String -> (a -> String) -> String -> [a] -> String
showThings "{" (Atom, Value) -> String
showPair "}" (Map Atom Value -> [(Atom, Value)]
forall k a. Map k a -> [(k, a)]
Data.Map.toList Map Atom Value
xs) where
showPair :: (Atom, Value) -> String
showPair (k :: Atom
k, v :: Value
v) = Bool -> Atom -> String
showAtom Bool
False Atom
k String -> ShowS
forall a. [a] -> [a] -> [a]
++ ": " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> Value -> String
showValue Bool
False Value
v
showValue _ (ValueStructure xs :: [Value]
xs) = String -> (Value -> String) -> String -> [Value] -> String
forall a. String -> (a -> String) -> String -> [a] -> String
showThings "(" (Bool -> Value -> String
showValue Bool
False) ")" [Value]
xs
showThings :: String -> (a -> String) -> String -> [a] -> String
showThings :: String -> (a -> String) -> String -> [a] -> String
showThings a :: String
a s :: a -> String
s z :: String
z xs :: [a]
xs = String
a String -> ShowS
forall a. [a] -> [a] -> [a]
++ String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate ", " ((a -> String) -> [a] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map a -> String
s [a]
xs) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
z
vectorToBytes :: Vector Value -> BS.ByteString
vectorToBytes :: Vector Value -> ByteString
vectorToBytes = [Word8] -> ByteString
BS.pack
([Word8] -> ByteString)
-> (Vector Value -> [Word8]) -> Vector Value -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector Word8 -> [Word8]
forall a. Vector a -> [a]
Data.Vector.toList
(Vector Word8 -> [Word8])
-> (Vector Value -> Vector Word8) -> Vector Value -> [Word8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Value -> Word8) -> Vector Value -> Vector Word8
forall a b. (a -> b) -> Vector a -> Vector b
Data.Vector.map (\(ValueAtom (AtomWord8 x :: Word8
x)) -> Word8
x)
instance Show Variant where
showsPrec :: Int -> Variant -> ShowS
showsPrec d :: Int
d (Variant x :: Value
x) = Bool -> ShowS -> ShowS
showParen (Int
d Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (ShowS -> ShowS) -> ShowS -> ShowS
forall a b. (a -> b) -> a -> b
$
String -> ShowS
showString "Variant " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString (Bool -> Value -> String
showValue Bool
True Value
x)
variantType :: Variant -> Type
variantType :: Variant -> Type
variantType (Variant val :: Value
val) = Value -> Type
valueType Value
val
valueType :: Value -> Type
valueType :: Value -> Type
valueType (ValueAtom x :: Atom
x) = Atom -> Type
atomType Atom
x
valueType (ValueVariant _) = Type
TypeVariant
valueType (ValueVector t :: Type
t _) = Type -> Type
TypeArray Type
t
valueType (ValueBytes _) = Type -> Type
TypeArray Type
TypeWord8
valueType (ValueMap kt :: Type
kt vt :: Type
vt _) = Type -> Type -> Type
TypeDictionary Type
kt Type
vt
valueType (ValueStructure vs :: [Value]
vs) = [Type] -> Type
TypeStructure ((Value -> Type) -> [Value] -> [Type]
forall a b. (a -> b) -> [a] -> [b]
map Value -> Type
valueType [Value]
vs)
atomType :: Atom -> Type
atomType :: Atom -> Type
atomType (AtomBool _) = Type
TypeBoolean
atomType (AtomWord8 _) = Type
TypeWord8
atomType (AtomWord16 _) = Type
TypeWord16
atomType (AtomWord32 _) = Type
TypeWord32
atomType (AtomWord64 _) = Type
TypeWord64
atomType (AtomInt16 _) = Type
TypeInt16
atomType (AtomInt32 _) = Type
TypeInt32
atomType (AtomInt64 _) = Type
TypeInt64
atomType (AtomDouble _) = Type
TypeDouble
atomType (AtomUnixFd _) = Type
TypeUnixFd
atomType (AtomText _) = Type
TypeString
atomType (AtomSignature _) = Type
TypeSignature
atomType (AtomObjectPath _) = Type
TypeObjectPath
#define IS_ATOM(HsType, AtomCons, TypeCons) \
instance IsAtom HsType where \
{ toAtom = AtomCons \
; fromAtom (AtomCons x) = Just x \
; fromAtom _ = Nothing \
}; \
instance IsValue HsType where \
{ typeOf_ _ = TypeCons \
; toValue = ValueAtom . toAtom \
; fromValue (ValueAtom x) = fromAtom x \
; fromValue _ = Nothing \
}; \
instance IsVariant HsType where \
{ toVariant = Variant . toValue \
; fromVariant (Variant val) = fromValue val \
}
IS_ATOM(Bool, AtomBool, TypeBoolean)
IS_ATOM(Word8, AtomWord8, TypeWord8)
IS_ATOM(Word16, AtomWord16, TypeWord16)
IS_ATOM(Word32, AtomWord32, TypeWord32)
IS_ATOM(Word64, AtomWord64, TypeWord64)
IS_ATOM(Int16, AtomInt16, TypeInt16)
IS_ATOM(Int32, AtomInt32, TypeInt32)
IS_ATOM(Int64, AtomInt64, TypeInt64)
IS_ATOM(Double, AtomDouble, TypeDouble)
IS_ATOM(Fd, AtomUnixFd, TypeUnixFd)
IS_ATOM(Text, AtomText, TypeString)
IS_ATOM(Signature, AtomSignature, TypeSignature)
IS_ATOM(ObjectPath, AtomObjectPath, TypeObjectPath)
instance IsValue Variant where
typeOf_ :: Proxy Variant -> Type
typeOf_ _ = Type
TypeVariant
toValue :: Variant -> Value
toValue = Variant -> Value
ValueVariant
fromValue :: Value -> Maybe Variant
fromValue (ValueVariant x :: Variant
x) = Variant -> Maybe Variant
forall a. a -> Maybe a
Just Variant
x
fromValue _ = Maybe Variant
forall a. Maybe a
Nothing
instance IsVariant Variant where
toVariant :: Variant -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant) -> (Variant -> Value) -> Variant -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Variant -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe Variant
fromVariant (Variant val :: Value
val) = Value -> Maybe Variant
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance IsAtom Data.Text.Lazy.Text where
toAtom :: Text -> Atom
toAtom = Text -> Atom
forall a. IsAtom a => a -> Atom
toAtom (Text -> Atom) -> (Text -> Text) -> Text -> Atom
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text
Data.Text.Lazy.toStrict
fromAtom :: Atom -> Maybe Text
fromAtom = (Text -> Text) -> Maybe Text -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> Text
Data.Text.Lazy.fromStrict (Maybe Text -> Maybe Text)
-> (Atom -> Maybe Text) -> Atom -> Maybe Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Atom -> Maybe Text
forall a. IsAtom a => Atom -> Maybe a
fromAtom
instance IsValue Data.Text.Lazy.Text where
typeOf_ :: Proxy Text -> Type
typeOf_ _ = Type
TypeString
toValue :: Text -> Value
toValue = Atom -> Value
ValueAtom (Atom -> Value) -> (Text -> Atom) -> Text -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Atom
forall a. IsAtom a => a -> Atom
toAtom
fromValue :: Value -> Maybe Text
fromValue (ValueAtom x :: Atom
x) = Atom -> Maybe Text
forall a. IsAtom a => Atom -> Maybe a
fromAtom Atom
x
fromValue _ = Maybe Text
forall a. Maybe a
Nothing
instance IsVariant Data.Text.Lazy.Text where
toVariant :: Text -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant) -> (Text -> Value) -> Text -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe Text
fromVariant (Variant val :: Value
val) = Value -> Maybe Text
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance IsAtom String where
toAtom :: String -> Atom
toAtom = Text -> Atom
forall a. IsAtom a => a -> Atom
toAtom (Text -> Atom) -> (String -> Text) -> String -> Atom
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
Data.Text.pack
fromAtom :: Atom -> Maybe String
fromAtom = (Text -> String) -> Maybe Text -> Maybe String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> String
Data.Text.unpack (Maybe Text -> Maybe String)
-> (Atom -> Maybe Text) -> Atom -> Maybe String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Atom -> Maybe Text
forall a. IsAtom a => Atom -> Maybe a
fromAtom
instance IsValue String where
typeOf_ :: Proxy String -> Type
typeOf_ _ = Type
TypeString
toValue :: String -> Value
toValue = Atom -> Value
ValueAtom (Atom -> Value) -> (String -> Atom) -> String -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Atom
forall a. IsAtom a => a -> Atom
toAtom
fromValue :: Value -> Maybe String
fromValue (ValueAtom x :: Atom
x) = Atom -> Maybe String
forall a. IsAtom a => Atom -> Maybe a
fromAtom Atom
x
fromValue _ = Maybe String
forall a. Maybe a
Nothing
instance IsVariant String where
toVariant :: String -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant) -> (String -> Value) -> String -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe String
fromVariant (Variant val :: Value
val) = Value -> Maybe String
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance IsValue a => IsValue (Vector a) where
typeOf_ :: Proxy (Vector a) -> Type
typeOf_ _ = Type -> Type
TypeArray (Proxy a -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a
forall k (t :: k). Proxy t
Proxy :: Proxy a))
toValue :: Vector a -> Value
toValue v :: Vector a
v = Type -> Vector Value -> Value
ValueVector
(Proxy a -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a
forall k (t :: k). Proxy t
Proxy :: Proxy a))
((a -> Value) -> Vector a -> Vector Value
forall a b. (a -> b) -> Vector a -> Vector b
Data.Vector.map a -> Value
forall a. IsValue a => a -> Value
toValue Vector a
v)
fromValue :: Value -> Maybe (Vector a)
fromValue (ValueVector _ v :: Vector Value
v) = (Value -> Maybe a) -> Vector Value -> Maybe (Vector a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Vector a -> m (Vector b)
Data.Vector.mapM Value -> Maybe a
forall a. IsValue a => Value -> Maybe a
fromValue Vector Value
v
fromValue _ = Maybe (Vector a)
forall a. Maybe a
Nothing
instance IsValue a => IsVariant (Vector a) where
toVariant :: Vector a -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant) -> (Vector a -> Value) -> Vector a -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe (Vector a)
fromVariant (Variant val :: Value
val) = Value -> Maybe (Vector a)
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance IsValue a => IsValue [a] where
typeOf_ :: Proxy [a] -> Type
typeOf_ _ = Type -> Type
TypeArray (Proxy a -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a
forall k (t :: k). Proxy t
Proxy :: Proxy a))
toValue :: [a] -> Value
toValue = Vector a -> Value
forall a. IsValue a => a -> Value
toValue (Vector a -> Value) -> ([a] -> Vector a) -> [a] -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Vector a
forall a. [a] -> Vector a
Data.Vector.fromList
fromValue :: Value -> Maybe [a]
fromValue = (Vector a -> [a]) -> Maybe (Vector a) -> Maybe [a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> [a]
forall a. Vector a -> [a]
Data.Vector.toList (Maybe (Vector a) -> Maybe [a])
-> (Value -> Maybe (Vector a)) -> Value -> Maybe [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Maybe (Vector a)
forall a. IsValue a => Value -> Maybe a
fromValue
instance IsValue a => IsVariant [a] where
toVariant :: [a] -> Variant
toVariant = Vector a -> Variant
forall a. IsVariant a => a -> Variant
toVariant (Vector a -> Variant) -> ([a] -> Vector a) -> [a] -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Vector a
forall a. [a] -> Vector a
Data.Vector.fromList
fromVariant :: Variant -> Maybe [a]
fromVariant = (Vector a -> [a]) -> Maybe (Vector a) -> Maybe [a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Vector a -> [a]
forall a. Vector a -> [a]
Data.Vector.toList (Maybe (Vector a) -> Maybe [a])
-> (Variant -> Maybe (Vector a)) -> Variant -> Maybe [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Variant -> Maybe (Vector a)
forall a. IsVariant a => Variant -> Maybe a
fromVariant
instance IsValue BS.ByteString where
typeOf_ :: Proxy ByteString -> Type
typeOf_ _ = Type -> Type
TypeArray Type
TypeWord8
toValue :: ByteString -> Value
toValue = ByteString -> Value
ValueBytes
fromValue :: Value -> Maybe ByteString
fromValue (ValueBytes bs :: ByteString
bs) = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just ByteString
bs
fromValue (ValueVector TypeWord8 v :: Vector Value
v) = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Vector Value -> ByteString
vectorToBytes Vector Value
v)
fromValue _ = Maybe ByteString
forall a. Maybe a
Nothing
instance IsVariant BS.ByteString where
toVariant :: ByteString -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant)
-> (ByteString -> Value) -> ByteString -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe ByteString
fromVariant (Variant val :: Value
val) = Value -> Maybe ByteString
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance IsValue BL.ByteString where
typeOf_ :: Proxy ByteString -> Type
typeOf_ _ = Type -> Type
TypeArray Type
TypeWord8
toValue :: ByteString -> Value
toValue = ByteString -> Value
forall a. IsValue a => a -> Value
toValue
(ByteString -> Value)
-> (ByteString -> ByteString) -> ByteString -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
BS.concat
([ByteString] -> ByteString)
-> (ByteString -> [ByteString]) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BL.toChunks
fromValue :: Value -> Maybe ByteString
fromValue = (ByteString -> ByteString) -> Maybe ByteString -> Maybe ByteString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\bs :: ByteString
bs -> [ByteString] -> ByteString
BL.fromChunks [ByteString
bs])
(Maybe ByteString -> Maybe ByteString)
-> (Value -> Maybe ByteString) -> Value -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Maybe ByteString
forall a. IsValue a => Value -> Maybe a
fromValue
instance IsVariant BL.ByteString where
toVariant :: ByteString -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant)
-> (ByteString -> Value) -> ByteString -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe ByteString
fromVariant (Variant val :: Value
val) = Value -> Maybe ByteString
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance (Ord k, IsAtom k, IsValue v) => IsValue (Map k v) where
typeOf_ :: Proxy (Map k v) -> Type
typeOf_ _ = Type -> Type -> Type
TypeDictionary
(Proxy k -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy k
forall k (t :: k). Proxy t
Proxy :: Proxy k))
(Proxy v -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy v
forall k (t :: k). Proxy t
Proxy :: Proxy v))
toValue :: Map k v -> Value
toValue m :: Map k v
m = Type -> Type -> Map Atom Value -> Value
ValueMap Type
kt Type
vt ((k -> v -> (Atom, Value)) -> Map k v -> Map Atom Value
forall k' k v v'.
Ord k' =>
(k -> v -> (k', v')) -> Map k v -> Map k' v'
bimap k -> v -> (Atom, Value)
forall a a. (IsAtom a, IsValue a) => a -> a -> (Atom, Value)
box Map k v
m) where
kt :: Type
kt = Proxy k -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy k
forall k (t :: k). Proxy t
Proxy :: Proxy k)
vt :: Type
vt = Proxy v -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy v
forall k (t :: k). Proxy t
Proxy :: Proxy v)
box :: a -> a -> (Atom, Value)
box k :: a
k v :: a
v = (a -> Atom
forall a. IsAtom a => a -> Atom
toAtom a
k, a -> Value
forall a. IsValue a => a -> Value
toValue a
v)
fromValue :: Value -> Maybe (Map k v)
fromValue (ValueMap _ _ m :: Map Atom Value
m) = (Atom -> Value -> Maybe (k, v))
-> Map Atom Value -> Maybe (Map k v)
forall (m :: * -> *) k' k v v'.
(Monad m, Ord k') =>
(k -> v -> m (k', v')) -> Map k v -> m (Map k' v')
bimapM Atom -> Value -> Maybe (k, v)
forall a b. (IsAtom a, IsValue b) => Atom -> Value -> Maybe (a, b)
unbox Map Atom Value
m where
unbox :: Atom -> Value -> Maybe (a, b)
unbox k :: Atom
k v :: Value
v = do
a
k' <- Atom -> Maybe a
forall a. IsAtom a => Atom -> Maybe a
fromAtom Atom
k
b
v' <- Value -> Maybe b
forall a. IsValue a => Value -> Maybe a
fromValue Value
v
(a, b) -> Maybe (a, b)
forall (m :: * -> *) a. Monad m => a -> m a
return (a
k', b
v')
fromValue _ = Maybe (Map k v)
forall a. Maybe a
Nothing
bimap :: Ord k' => (k -> v -> (k', v')) -> Map k v -> Map k' v'
bimap :: (k -> v -> (k', v')) -> Map k v -> Map k' v'
bimap f :: k -> v -> (k', v')
f = [(k', v')] -> Map k' v'
forall k a. Ord k => [(k, a)] -> Map k a
Data.Map.fromList ([(k', v')] -> Map k' v')
-> (Map k v -> [(k', v')]) -> Map k v -> Map k' v'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((k, v) -> (k', v')) -> [(k, v)] -> [(k', v')]
forall a b. (a -> b) -> [a] -> [b]
map (\(k :: k
k, v :: v
v) -> k -> v -> (k', v')
f k
k v
v) ([(k, v)] -> [(k', v')])
-> (Map k v -> [(k, v)]) -> Map k v -> [(k', v')]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map k v -> [(k, v)]
forall k a. Map k a -> [(k, a)]
Data.Map.toList
bimapM :: (Monad m, Ord k') => (k -> v -> m (k', v')) -> Map k v -> m (Map k' v')
bimapM :: (k -> v -> m (k', v')) -> Map k v -> m (Map k' v')
bimapM f :: k -> v -> m (k', v')
f = ([(k', v')] -> Map k' v') -> m [(k', v')] -> m (Map k' v')
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM [(k', v')] -> Map k' v'
forall k a. Ord k => [(k, a)] -> Map k a
Data.Map.fromList (m [(k', v')] -> m (Map k' v'))
-> (Map k v -> m [(k', v')]) -> Map k v -> m (Map k' v')
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((k, v) -> m (k', v')) -> [(k, v)] -> m [(k', v')]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM (\(k :: k
k, v :: v
v) -> k -> v -> m (k', v')
f k
k v
v) ([(k, v)] -> m [(k', v')])
-> (Map k v -> [(k, v)]) -> Map k v -> m [(k', v')]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map k v -> [(k, v)]
forall k a. Map k a -> [(k, a)]
Data.Map.toList
instance (Ord k, IsAtom k, IsValue v) => IsVariant (Map k v) where
toVariant :: Map k v -> Variant
toVariant = Value -> Variant
Variant (Value -> Variant) -> (Map k v -> Value) -> Map k v -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map k v -> Value
forall a. IsValue a => a -> Value
toValue
fromVariant :: Variant -> Maybe (Map k v)
fromVariant (Variant val :: Value
val) = Value -> Maybe (Map k v)
forall a. IsValue a => Value -> Maybe a
fromValue Value
val
instance IsValue () where
typeOf_ :: Proxy () -> Type
typeOf_ _ = [Type] -> Type
TypeStructure []
toValue :: () -> Value
toValue _ = [Value] -> Value
ValueStructure []
fromValue :: Value -> Maybe ()
fromValue (ValueStructure []) = () -> Maybe ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
fromValue _ = Maybe ()
forall a. Maybe a
Nothing
instance IsVariant () where
toVariant :: () -> Variant
toVariant () = Value -> Variant
Variant ([Value] -> Value
ValueStructure [])
fromVariant :: Variant -> Maybe ()
fromVariant (Variant (ValueStructure [])) = () -> Maybe ()
forall a. a -> Maybe a
Just ()
fromVariant _ = Maybe ()
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2) => IsValue (a1, a2) where
typeOf_ :: Proxy (a1, a2) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
]
toValue :: (a1, a2) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2]
fromValue :: Value -> Maybe (a1, a2)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
(a1, a2) -> Maybe (a1, a2)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2')
fromValue _ = Maybe (a1, a2)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2) => IsVariant (a1, a2) where
toVariant :: (a1, a2) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2])
fromVariant :: Variant -> Maybe (a1, a2)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
(a1, a2) -> Maybe (a1, a2)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2')
fromVariant _ = Maybe (a1, a2)
forall a. Maybe a
Nothing
varToVal :: IsVariant a => a -> Value
varToVal :: a -> Value
varToVal a :: a
a = case a -> Variant
forall a. IsVariant a => a -> Variant
toVariant a
a of
Variant val :: Value
val -> Value
val
newtype ObjectPath = ObjectPath String
deriving (ObjectPath -> ObjectPath -> Bool
(ObjectPath -> ObjectPath -> Bool)
-> (ObjectPath -> ObjectPath -> Bool) -> Eq ObjectPath
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ObjectPath -> ObjectPath -> Bool
$c/= :: ObjectPath -> ObjectPath -> Bool
== :: ObjectPath -> ObjectPath -> Bool
$c== :: ObjectPath -> ObjectPath -> Bool
Eq, Eq ObjectPath
Eq ObjectPath =>
(ObjectPath -> ObjectPath -> Ordering)
-> (ObjectPath -> ObjectPath -> Bool)
-> (ObjectPath -> ObjectPath -> Bool)
-> (ObjectPath -> ObjectPath -> Bool)
-> (ObjectPath -> ObjectPath -> Bool)
-> (ObjectPath -> ObjectPath -> ObjectPath)
-> (ObjectPath -> ObjectPath -> ObjectPath)
-> Ord ObjectPath
ObjectPath -> ObjectPath -> Bool
ObjectPath -> ObjectPath -> Ordering
ObjectPath -> ObjectPath -> ObjectPath
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ObjectPath -> ObjectPath -> ObjectPath
$cmin :: ObjectPath -> ObjectPath -> ObjectPath
max :: ObjectPath -> ObjectPath -> ObjectPath
$cmax :: ObjectPath -> ObjectPath -> ObjectPath
>= :: ObjectPath -> ObjectPath -> Bool
$c>= :: ObjectPath -> ObjectPath -> Bool
> :: ObjectPath -> ObjectPath -> Bool
$c> :: ObjectPath -> ObjectPath -> Bool
<= :: ObjectPath -> ObjectPath -> Bool
$c<= :: ObjectPath -> ObjectPath -> Bool
< :: ObjectPath -> ObjectPath -> Bool
$c< :: ObjectPath -> ObjectPath -> Bool
compare :: ObjectPath -> ObjectPath -> Ordering
$ccompare :: ObjectPath -> ObjectPath -> Ordering
$cp1Ord :: Eq ObjectPath
Ord, Int -> ObjectPath -> ShowS
[ObjectPath] -> ShowS
ObjectPath -> String
(Int -> ObjectPath -> ShowS)
-> (ObjectPath -> String)
-> ([ObjectPath] -> ShowS)
-> Show ObjectPath
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ObjectPath] -> ShowS
$cshowList :: [ObjectPath] -> ShowS
show :: ObjectPath -> String
$cshow :: ObjectPath -> String
showsPrec :: Int -> ObjectPath -> ShowS
$cshowsPrec :: Int -> ObjectPath -> ShowS
Show, ObjectPath -> ()
(ObjectPath -> ()) -> NFData ObjectPath
forall a. (a -> ()) -> NFData a
rnf :: ObjectPath -> ()
$crnf :: ObjectPath -> ()
NFData)
pathElements :: ObjectPath -> [String]
pathElements :: ObjectPath -> [String]
pathElements = (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null) ([String] -> [String])
-> (ObjectPath -> [String]) -> ObjectPath -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String -> [String]
forall a. Eq a => [a] -> [a] -> [[a]]
splitOn "/" (String -> [String])
-> (ObjectPath -> String) -> ObjectPath -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ObjectPath -> String
forall a b. Coercible a b => a -> b
coerce
fromElements :: [String] -> ObjectPath
fromElements :: [String] -> ObjectPath
fromElements elems :: [String]
elems = String -> ObjectPath
objectPath_ (String -> ObjectPath) -> String -> ObjectPath
forall a b. (a -> b) -> a -> b
$ '/'Char -> ShowS
forall a. a -> [a] -> [a]
:String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate "/" [String]
elems
formatObjectPath :: ObjectPath -> String
formatObjectPath :: ObjectPath -> String
formatObjectPath (ObjectPath s :: String
s) = String
s
parseObjectPath :: MonadThrow m => String -> m ObjectPath
parseObjectPath :: String -> m ObjectPath
parseObjectPath s :: String
s = do
Parser () -> String -> m ()
forall (m :: * -> *) a. MonadThrow m => Parser a -> String -> m a
maybeParseString Parser ()
parserObjectPath String
s
ObjectPath -> m ObjectPath
forall (m :: * -> *) a. Monad m => a -> m a
return (String -> ObjectPath
ObjectPath String
s)
objectPath_ :: String -> ObjectPath
objectPath_ :: String -> ObjectPath
objectPath_ = String -> (String -> Maybe ObjectPath) -> String -> ObjectPath
forall a. String -> (String -> Maybe a) -> String -> a
forceParse "object path" String -> Maybe ObjectPath
forall (m :: * -> *). MonadThrow m => String -> m ObjectPath
parseObjectPath
instance Data.String.IsString ObjectPath where
fromString :: String -> ObjectPath
fromString = String -> ObjectPath
objectPath_
parserObjectPath :: Parsec.Parser ()
parserObjectPath :: Parser ()
parserObjectPath = Parser ()
forall st. GenParser Char st ()
root Parser () -> Parser () -> Parser ()
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|> Parser ()
object where
root :: GenParser Char st ()
root = GenParser Char st () -> GenParser Char st ()
forall tok st a. GenParser tok st a -> GenParser tok st a
Parsec.try (GenParser Char st () -> GenParser Char st ())
-> GenParser Char st () -> GenParser Char st ()
forall a b. (a -> b) -> a -> b
$ do
GenParser Char st ()
forall st. GenParser Char st ()
slash
GenParser Char st ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
Parsec.eof
object :: Parser ()
object = do
Parser ()
forall st. GenParser Char st ()
slash
Parser () -> Parser () -> Parser ()
forall a b. Parser a -> Parser b -> Parser ()
skipSepBy1 Parser ()
forall st. GenParser Char st ()
element Parser ()
forall st. GenParser Char st ()
slash
Parser ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
Parsec.eof
element :: ParsecT String u Identity ()
element = ParsecT String u Identity Char -> ParsecT String u Identity ()
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m ()
Parsec.skipMany1 (String -> ParsecT String u Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
chars)
slash :: ParsecT String u Identity ()
slash = Char -> ParsecT String u Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
Char -> ParsecT s u m Char
Parsec.char '/' ParsecT String u Identity Char
-> ParsecT String u Identity () -> ParsecT String u Identity ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> ParsecT String u Identity ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
chars :: String
chars = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [ ['a'..'z']
, ['A'..'Z']
, ['0'..'9']
, "_"]
newtype InterfaceName = InterfaceName String
deriving (InterfaceName -> InterfaceName -> Bool
(InterfaceName -> InterfaceName -> Bool)
-> (InterfaceName -> InterfaceName -> Bool) -> Eq InterfaceName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InterfaceName -> InterfaceName -> Bool
$c/= :: InterfaceName -> InterfaceName -> Bool
== :: InterfaceName -> InterfaceName -> Bool
$c== :: InterfaceName -> InterfaceName -> Bool
Eq, Eq InterfaceName
Eq InterfaceName =>
(InterfaceName -> InterfaceName -> Ordering)
-> (InterfaceName -> InterfaceName -> Bool)
-> (InterfaceName -> InterfaceName -> Bool)
-> (InterfaceName -> InterfaceName -> Bool)
-> (InterfaceName -> InterfaceName -> Bool)
-> (InterfaceName -> InterfaceName -> InterfaceName)
-> (InterfaceName -> InterfaceName -> InterfaceName)
-> Ord InterfaceName
InterfaceName -> InterfaceName -> Bool
InterfaceName -> InterfaceName -> Ordering
InterfaceName -> InterfaceName -> InterfaceName
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: InterfaceName -> InterfaceName -> InterfaceName
$cmin :: InterfaceName -> InterfaceName -> InterfaceName
max :: InterfaceName -> InterfaceName -> InterfaceName
$cmax :: InterfaceName -> InterfaceName -> InterfaceName
>= :: InterfaceName -> InterfaceName -> Bool
$c>= :: InterfaceName -> InterfaceName -> Bool
> :: InterfaceName -> InterfaceName -> Bool
$c> :: InterfaceName -> InterfaceName -> Bool
<= :: InterfaceName -> InterfaceName -> Bool
$c<= :: InterfaceName -> InterfaceName -> Bool
< :: InterfaceName -> InterfaceName -> Bool
$c< :: InterfaceName -> InterfaceName -> Bool
compare :: InterfaceName -> InterfaceName -> Ordering
$ccompare :: InterfaceName -> InterfaceName -> Ordering
$cp1Ord :: Eq InterfaceName
Ord, Int -> InterfaceName -> ShowS
[InterfaceName] -> ShowS
InterfaceName -> String
(Int -> InterfaceName -> ShowS)
-> (InterfaceName -> String)
-> ([InterfaceName] -> ShowS)
-> Show InterfaceName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InterfaceName] -> ShowS
$cshowList :: [InterfaceName] -> ShowS
show :: InterfaceName -> String
$cshow :: InterfaceName -> String
showsPrec :: Int -> InterfaceName -> ShowS
$cshowsPrec :: Int -> InterfaceName -> ShowS
Show, InterfaceName -> ()
(InterfaceName -> ()) -> NFData InterfaceName
forall a. (a -> ()) -> NFData a
rnf :: InterfaceName -> ()
$crnf :: InterfaceName -> ()
NFData)
formatInterfaceName :: InterfaceName -> String
formatInterfaceName :: InterfaceName -> String
formatInterfaceName (InterfaceName s :: String
s) = String
s
parseInterfaceName :: MonadThrow m => String -> m InterfaceName
parseInterfaceName :: String -> m InterfaceName
parseInterfaceName s :: String
s = do
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 255) (m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ IOError -> m ()
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m ()) -> IOError -> m ()
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "name too long"
Parser () -> String -> m ()
forall (m :: * -> *) a. MonadThrow m => Parser a -> String -> m a
maybeParseString Parser ()
parserInterfaceName String
s
InterfaceName -> m InterfaceName
forall (m :: * -> *) a. Monad m => a -> m a
return (String -> InterfaceName
InterfaceName String
s)
interfaceName_ :: String -> InterfaceName
interfaceName_ :: String -> InterfaceName
interfaceName_ = String
-> (String -> Maybe InterfaceName) -> String -> InterfaceName
forall a. String -> (String -> Maybe a) -> String -> a
forceParse "interface name" String -> Maybe InterfaceName
forall (m :: * -> *). MonadThrow m => String -> m InterfaceName
parseInterfaceName
instance Data.String.IsString InterfaceName where
fromString :: String -> InterfaceName
fromString = String -> InterfaceName
interfaceName_
instance IsVariant InterfaceName where
toVariant :: InterfaceName -> Variant
toVariant = String -> Variant
forall a. IsVariant a => a -> Variant
toVariant (String -> Variant)
-> (InterfaceName -> String) -> InterfaceName -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. InterfaceName -> String
formatInterfaceName
fromVariant :: Variant -> Maybe InterfaceName
fromVariant = Variant -> Maybe String
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe String)
-> (String -> Maybe InterfaceName)
-> Variant
-> Maybe InterfaceName
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> String -> Maybe InterfaceName
forall (m :: * -> *). MonadThrow m => String -> m InterfaceName
parseInterfaceName
parserInterfaceName :: Parsec.Parser ()
parserInterfaceName :: Parser ()
parserInterfaceName = Parser ()
name Parser () -> Parser () -> Parser ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Parser ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
Parsec.eof where
alpha :: String
alpha = ['a'..'z'] String -> ShowS
forall a. [a] -> [a] -> [a]
++ ['A'..'Z'] String -> ShowS
forall a. [a] -> [a] -> [a]
++ "_"
alphanum :: String
alphanum = String
alpha String -> ShowS
forall a. [a] -> [a] -> [a]
++ ['0'..'9']
element :: ParsecT String u Identity ()
element = do
Char
_ <- String -> ParsecT String u Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
alpha
ParsecT String u Identity Char -> ParsecT String u Identity ()
forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m ()
Parsec.skipMany (String -> ParsecT String u Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
alphanum)
name :: Parser ()
name = do
Parser ()
forall st. GenParser Char st ()
element
Char
_ <- Char -> ParsecT String () Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
Char -> ParsecT s u m Char
Parsec.char '.'
Parser () -> ParsecT String () Identity Char -> Parser ()
forall a b. Parser a -> Parser b -> Parser ()
skipSepBy1 Parser ()
forall st. GenParser Char st ()
element (Char -> ParsecT String () Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
Char -> ParsecT s u m Char
Parsec.char '.')
newtype MemberName = MemberName String
deriving (MemberName -> MemberName -> Bool
(MemberName -> MemberName -> Bool)
-> (MemberName -> MemberName -> Bool) -> Eq MemberName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MemberName -> MemberName -> Bool
$c/= :: MemberName -> MemberName -> Bool
== :: MemberName -> MemberName -> Bool
$c== :: MemberName -> MemberName -> Bool
Eq, Eq MemberName
Eq MemberName =>
(MemberName -> MemberName -> Ordering)
-> (MemberName -> MemberName -> Bool)
-> (MemberName -> MemberName -> Bool)
-> (MemberName -> MemberName -> Bool)
-> (MemberName -> MemberName -> Bool)
-> (MemberName -> MemberName -> MemberName)
-> (MemberName -> MemberName -> MemberName)
-> Ord MemberName
MemberName -> MemberName -> Bool
MemberName -> MemberName -> Ordering
MemberName -> MemberName -> MemberName
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MemberName -> MemberName -> MemberName
$cmin :: MemberName -> MemberName -> MemberName
max :: MemberName -> MemberName -> MemberName
$cmax :: MemberName -> MemberName -> MemberName
>= :: MemberName -> MemberName -> Bool
$c>= :: MemberName -> MemberName -> Bool
> :: MemberName -> MemberName -> Bool
$c> :: MemberName -> MemberName -> Bool
<= :: MemberName -> MemberName -> Bool
$c<= :: MemberName -> MemberName -> Bool
< :: MemberName -> MemberName -> Bool
$c< :: MemberName -> MemberName -> Bool
compare :: MemberName -> MemberName -> Ordering
$ccompare :: MemberName -> MemberName -> Ordering
$cp1Ord :: Eq MemberName
Ord, Int -> MemberName -> ShowS
[MemberName] -> ShowS
MemberName -> String
(Int -> MemberName -> ShowS)
-> (MemberName -> String)
-> ([MemberName] -> ShowS)
-> Show MemberName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MemberName] -> ShowS
$cshowList :: [MemberName] -> ShowS
show :: MemberName -> String
$cshow :: MemberName -> String
showsPrec :: Int -> MemberName -> ShowS
$cshowsPrec :: Int -> MemberName -> ShowS
Show, MemberName -> ()
(MemberName -> ()) -> NFData MemberName
forall a. (a -> ()) -> NFData a
rnf :: MemberName -> ()
$crnf :: MemberName -> ()
NFData)
formatMemberName :: MemberName -> String
formatMemberName :: MemberName -> String
formatMemberName (MemberName s :: String
s) = String
s
parseMemberName :: MonadThrow m => String -> m MemberName
parseMemberName :: String -> m MemberName
parseMemberName s :: String
s = do
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 255) (m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ IOError -> m ()
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m ()) -> IOError -> m ()
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "name too long"
Parser () -> String -> m ()
forall (m :: * -> *) a. MonadThrow m => Parser a -> String -> m a
maybeParseString Parser ()
parserMemberName String
s
MemberName -> m MemberName
forall (m :: * -> *) a. Monad m => a -> m a
return (String -> MemberName
MemberName String
s)
memberName_ :: String -> MemberName
memberName_ :: String -> MemberName
memberName_ = String -> (String -> Maybe MemberName) -> String -> MemberName
forall a. String -> (String -> Maybe a) -> String -> a
forceParse "member name" String -> Maybe MemberName
forall (m :: * -> *). MonadThrow m => String -> m MemberName
parseMemberName
instance Data.String.IsString MemberName where
fromString :: String -> MemberName
fromString = String -> MemberName
memberName_
instance IsVariant MemberName where
toVariant :: MemberName -> Variant
toVariant = String -> Variant
forall a. IsVariant a => a -> Variant
toVariant (String -> Variant)
-> (MemberName -> String) -> MemberName -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MemberName -> String
formatMemberName
fromVariant :: Variant -> Maybe MemberName
fromVariant = Variant -> Maybe String
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe String)
-> (String -> Maybe MemberName) -> Variant -> Maybe MemberName
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> String -> Maybe MemberName
forall (m :: * -> *). MonadThrow m => String -> m MemberName
parseMemberName
parserMemberName :: Parsec.Parser ()
parserMemberName :: Parser ()
parserMemberName = Parser ()
forall st. GenParser Char st ()
name Parser () -> Parser () -> Parser ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Parser ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
Parsec.eof where
alpha :: String
alpha = ['a'..'z'] String -> ShowS
forall a. [a] -> [a] -> [a]
++ ['A'..'Z'] String -> ShowS
forall a. [a] -> [a] -> [a]
++ "_"
alphanum :: String
alphanum = String
alpha String -> ShowS
forall a. [a] -> [a] -> [a]
++ ['0'..'9']
name :: ParsecT String u Identity ()
name = do
Char
_ <- String -> ParsecT String u Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
alpha
ParsecT String u Identity Char -> ParsecT String u Identity ()
forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m ()
Parsec.skipMany (String -> ParsecT String u Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
alphanum)
newtype ErrorName = ErrorName String
deriving (ErrorName -> ErrorName -> Bool
(ErrorName -> ErrorName -> Bool)
-> (ErrorName -> ErrorName -> Bool) -> Eq ErrorName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ErrorName -> ErrorName -> Bool
$c/= :: ErrorName -> ErrorName -> Bool
== :: ErrorName -> ErrorName -> Bool
$c== :: ErrorName -> ErrorName -> Bool
Eq, Eq ErrorName
Eq ErrorName =>
(ErrorName -> ErrorName -> Ordering)
-> (ErrorName -> ErrorName -> Bool)
-> (ErrorName -> ErrorName -> Bool)
-> (ErrorName -> ErrorName -> Bool)
-> (ErrorName -> ErrorName -> Bool)
-> (ErrorName -> ErrorName -> ErrorName)
-> (ErrorName -> ErrorName -> ErrorName)
-> Ord ErrorName
ErrorName -> ErrorName -> Bool
ErrorName -> ErrorName -> Ordering
ErrorName -> ErrorName -> ErrorName
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ErrorName -> ErrorName -> ErrorName
$cmin :: ErrorName -> ErrorName -> ErrorName
max :: ErrorName -> ErrorName -> ErrorName
$cmax :: ErrorName -> ErrorName -> ErrorName
>= :: ErrorName -> ErrorName -> Bool
$c>= :: ErrorName -> ErrorName -> Bool
> :: ErrorName -> ErrorName -> Bool
$c> :: ErrorName -> ErrorName -> Bool
<= :: ErrorName -> ErrorName -> Bool
$c<= :: ErrorName -> ErrorName -> Bool
< :: ErrorName -> ErrorName -> Bool
$c< :: ErrorName -> ErrorName -> Bool
compare :: ErrorName -> ErrorName -> Ordering
$ccompare :: ErrorName -> ErrorName -> Ordering
$cp1Ord :: Eq ErrorName
Ord, Int -> ErrorName -> ShowS
[ErrorName] -> ShowS
ErrorName -> String
(Int -> ErrorName -> ShowS)
-> (ErrorName -> String)
-> ([ErrorName] -> ShowS)
-> Show ErrorName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ErrorName] -> ShowS
$cshowList :: [ErrorName] -> ShowS
show :: ErrorName -> String
$cshow :: ErrorName -> String
showsPrec :: Int -> ErrorName -> ShowS
$cshowsPrec :: Int -> ErrorName -> ShowS
Show, ErrorName -> ()
(ErrorName -> ()) -> NFData ErrorName
forall a. (a -> ()) -> NFData a
rnf :: ErrorName -> ()
$crnf :: ErrorName -> ()
NFData)
formatErrorName :: ErrorName -> String
formatErrorName :: ErrorName -> String
formatErrorName (ErrorName s :: String
s) = String
s
parseErrorName :: MonadThrow m => String -> m ErrorName
parseErrorName :: String -> m ErrorName
parseErrorName s :: String
s = do
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 255) (m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ IOError -> m ()
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m ()) -> IOError -> m ()
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "name too long"
Parser () -> String -> m ()
forall (m :: * -> *) a. MonadThrow m => Parser a -> String -> m a
maybeParseString Parser ()
parserInterfaceName String
s
ErrorName -> m ErrorName
forall (m :: * -> *) a. Monad m => a -> m a
return (String -> ErrorName
ErrorName String
s)
errorName_ :: String -> ErrorName
errorName_ :: String -> ErrorName
errorName_ = String -> (String -> Maybe ErrorName) -> String -> ErrorName
forall a. String -> (String -> Maybe a) -> String -> a
forceParse "error name" String -> Maybe ErrorName
forall (m :: * -> *). MonadThrow m => String -> m ErrorName
parseErrorName
instance Data.String.IsString ErrorName where
fromString :: String -> ErrorName
fromString = String -> ErrorName
errorName_
instance IsVariant ErrorName where
toVariant :: ErrorName -> Variant
toVariant = String -> Variant
forall a. IsVariant a => a -> Variant
toVariant (String -> Variant)
-> (ErrorName -> String) -> ErrorName -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ErrorName -> String
formatErrorName
fromVariant :: Variant -> Maybe ErrorName
fromVariant = Variant -> Maybe String
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe String)
-> (String -> Maybe ErrorName) -> Variant -> Maybe ErrorName
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> String -> Maybe ErrorName
forall (m :: * -> *). MonadThrow m => String -> m ErrorName
parseErrorName
newtype BusName = BusName String
deriving (BusName -> BusName -> Bool
(BusName -> BusName -> Bool)
-> (BusName -> BusName -> Bool) -> Eq BusName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BusName -> BusName -> Bool
$c/= :: BusName -> BusName -> Bool
== :: BusName -> BusName -> Bool
$c== :: BusName -> BusName -> Bool
Eq, Eq BusName
Eq BusName =>
(BusName -> BusName -> Ordering)
-> (BusName -> BusName -> Bool)
-> (BusName -> BusName -> Bool)
-> (BusName -> BusName -> Bool)
-> (BusName -> BusName -> Bool)
-> (BusName -> BusName -> BusName)
-> (BusName -> BusName -> BusName)
-> Ord BusName
BusName -> BusName -> Bool
BusName -> BusName -> Ordering
BusName -> BusName -> BusName
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: BusName -> BusName -> BusName
$cmin :: BusName -> BusName -> BusName
max :: BusName -> BusName -> BusName
$cmax :: BusName -> BusName -> BusName
>= :: BusName -> BusName -> Bool
$c>= :: BusName -> BusName -> Bool
> :: BusName -> BusName -> Bool
$c> :: BusName -> BusName -> Bool
<= :: BusName -> BusName -> Bool
$c<= :: BusName -> BusName -> Bool
< :: BusName -> BusName -> Bool
$c< :: BusName -> BusName -> Bool
compare :: BusName -> BusName -> Ordering
$ccompare :: BusName -> BusName -> Ordering
$cp1Ord :: Eq BusName
Ord, Int -> BusName -> ShowS
[BusName] -> ShowS
BusName -> String
(Int -> BusName -> ShowS)
-> (BusName -> String) -> ([BusName] -> ShowS) -> Show BusName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BusName] -> ShowS
$cshowList :: [BusName] -> ShowS
show :: BusName -> String
$cshow :: BusName -> String
showsPrec :: Int -> BusName -> ShowS
$cshowsPrec :: Int -> BusName -> ShowS
Show, BusName -> ()
(BusName -> ()) -> NFData BusName
forall a. (a -> ()) -> NFData a
rnf :: BusName -> ()
$crnf :: BusName -> ()
NFData)
formatBusName :: BusName -> String
formatBusName :: BusName -> String
formatBusName (BusName s :: String
s) = String
s
parseBusName :: MonadThrow m => String -> m BusName
parseBusName :: String -> m BusName
parseBusName s :: String
s = do
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 255) (m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ IOError -> m ()
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m ()) -> IOError -> m ()
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError "name too long"
Parser () -> String -> m ()
forall (m :: * -> *) a. MonadThrow m => Parser a -> String -> m a
maybeParseString Parser ()
parserBusName String
s
BusName -> m BusName
forall (m :: * -> *) a. Monad m => a -> m a
return (String -> BusName
BusName String
s)
busName_ :: String -> BusName
busName_ :: String -> BusName
busName_ = String -> (String -> Maybe BusName) -> String -> BusName
forall a. String -> (String -> Maybe a) -> String -> a
forceParse "bus name" String -> Maybe BusName
forall (m :: * -> *). MonadThrow m => String -> m BusName
parseBusName
instance Data.String.IsString BusName where
fromString :: String -> BusName
fromString = String -> BusName
busName_
instance IsVariant BusName where
toVariant :: BusName -> Variant
toVariant = String -> Variant
forall a. IsVariant a => a -> Variant
toVariant (String -> Variant) -> (BusName -> String) -> BusName -> Variant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BusName -> String
formatBusName
fromVariant :: Variant -> Maybe BusName
fromVariant = Variant -> Maybe String
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe String)
-> (String -> Maybe BusName) -> Variant -> Maybe BusName
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> String -> Maybe BusName
forall (m :: * -> *). MonadThrow m => String -> m BusName
parseBusName
parserBusName :: Parsec.Parser ()
parserBusName :: Parser ()
parserBusName = Parser ()
name Parser () -> Parser () -> Parser ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Parser ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
Parsec.eof where
alpha :: String
alpha = ['a'..'z'] String -> ShowS
forall a. [a] -> [a] -> [a]
++ ['A'..'Z'] String -> ShowS
forall a. [a] -> [a] -> [a]
++ "_-"
alphanum :: String
alphanum = String
alpha String -> ShowS
forall a. [a] -> [a] -> [a]
++ ['0'..'9']
name :: Parser ()
name = Parser ()
unique Parser () -> Parser () -> Parser ()
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|> Parser ()
wellKnown
unique :: Parser ()
unique = do
Char
_ <- Char -> ParsecT String () Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
Char -> ParsecT s u m Char
Parsec.char ':'
String -> Parser ()
elements String
alphanum
wellKnown :: Parser ()
wellKnown = String -> Parser ()
elements String
alpha
elements :: [Char] -> Parsec.Parser ()
elements :: String -> Parser ()
elements start :: String
start = do
String -> Parser ()
element String
start
Parser () -> Parser ()
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m ()
Parsec.skipMany1 (Parser () -> Parser ()) -> Parser () -> Parser ()
forall a b. (a -> b) -> a -> b
$ do
Char
_ <- Char -> ParsecT String () Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
Char -> ParsecT s u m Char
Parsec.char '.'
String -> Parser ()
element String
start
element :: [Char] -> Parsec.Parser ()
element :: String -> Parser ()
element start :: String
start = do
Char
_ <- String -> ParsecT String () Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
start
ParsecT String () Identity Char -> Parser ()
forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m ()
Parsec.skipMany (String -> ParsecT String () Identity Char
forall s (m :: * -> *) u.
Stream s m Char =>
String -> ParsecT s u m Char
oneOf String
alphanum)
newtype Structure = Structure [Value]
deriving (Structure -> Structure -> Bool
(Structure -> Structure -> Bool)
-> (Structure -> Structure -> Bool) -> Eq Structure
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Structure -> Structure -> Bool
$c/= :: Structure -> Structure -> Bool
== :: Structure -> Structure -> Bool
$c== :: Structure -> Structure -> Bool
Eq)
instance Show Structure where
show :: Structure -> String
show (Structure xs :: [Value]
xs) = Bool -> Value -> String
showValue Bool
True ([Value] -> Value
ValueStructure [Value]
xs)
instance IsVariant Structure where
toVariant :: Structure -> Variant
toVariant (Structure xs :: [Value]
xs) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [Value]
xs)
fromVariant :: Variant -> Maybe Structure
fromVariant (Variant (ValueStructure xs :: [Value]
xs)) = Structure -> Maybe Structure
forall a. a -> Maybe a
Just ([Value] -> Structure
Structure [Value]
xs)
fromVariant _ = Maybe Structure
forall a. Maybe a
Nothing
structureItems :: Structure -> [Variant]
structureItems :: Structure -> [Variant]
structureItems (Structure xs :: [Value]
xs) = (Value -> Variant) -> [Value] -> [Variant]
forall a b. (a -> b) -> [a] -> [b]
map Value -> Variant
Variant [Value]
xs
data Array
= Array Type (Vector Value)
| ArrayBytes BS.ByteString
instance Show Array where
show :: Array -> String
show (Array t :: Type
t xs :: Vector Value
xs) = Bool -> Value -> String
showValue Bool
True (Type -> Vector Value -> Value
ValueVector Type
t Vector Value
xs)
show (ArrayBytes xs :: ByteString
xs) = Bool -> Value -> String
showValue Bool
True (ByteString -> Value
ValueBytes ByteString
xs)
instance Eq Array where
x :: Array
x == :: Array -> Array -> Bool
== y :: Array
y = Array -> Either ByteString (Type, Vector Value)
norm Array
x Either ByteString (Type, Vector Value)
-> Either ByteString (Type, Vector Value) -> Bool
forall a. Eq a => a -> a -> Bool
== Array -> Either ByteString (Type, Vector Value)
norm Array
y where
norm :: Array -> Either ByteString (Type, Vector Value)
norm (Array TypeWord8 xs :: Vector Value
xs) = ByteString -> Either ByteString (Type, Vector Value)
forall a b. a -> Either a b
Left (Vector Value -> ByteString
vectorToBytes Vector Value
xs)
norm (Array t :: Type
t xs :: Vector Value
xs) = (Type, Vector Value) -> Either ByteString (Type, Vector Value)
forall a b. b -> Either a b
Right (Type
t, Vector Value
xs)
norm (ArrayBytes xs :: ByteString
xs) = ByteString -> Either ByteString (Type, Vector Value)
forall a b. a -> Either a b
Left ByteString
xs
instance IsVariant Array where
toVariant :: Array -> Variant
toVariant (Array t :: Type
t xs :: Vector Value
xs) = Value -> Variant
Variant (Type -> Vector Value -> Value
ValueVector Type
t Vector Value
xs)
toVariant (ArrayBytes bs :: ByteString
bs) = Value -> Variant
Variant (ByteString -> Value
ValueBytes ByteString
bs)
fromVariant :: Variant -> Maybe Array
fromVariant (Variant (ValueVector t :: Type
t xs :: Vector Value
xs)) = Array -> Maybe Array
forall a. a -> Maybe a
Just (Type -> Vector Value -> Array
Array Type
t Vector Value
xs)
fromVariant (Variant (ValueBytes bs :: ByteString
bs)) = Array -> Maybe Array
forall a. a -> Maybe a
Just (ByteString -> Array
ArrayBytes ByteString
bs)
fromVariant _ = Maybe Array
forall a. Maybe a
Nothing
arrayItems :: Array -> [Variant]
arrayItems :: Array -> [Variant]
arrayItems (Array _ xs :: Vector Value
xs) = (Value -> Variant) -> [Value] -> [Variant]
forall a b. (a -> b) -> [a] -> [b]
map Value -> Variant
Variant (Vector Value -> [Value]
forall a. Vector a -> [a]
Data.Vector.toList Vector Value
xs)
arrayItems (ArrayBytes bs :: ByteString
bs) = (Word8 -> Variant) -> [Word8] -> [Variant]
forall a b. (a -> b) -> [a] -> [b]
map Word8 -> Variant
forall a. IsVariant a => a -> Variant
toVariant (ByteString -> [Word8]
BS.unpack ByteString
bs)
data Dictionary = Dictionary Type Type (Map Atom Value)
deriving (Dictionary -> Dictionary -> Bool
(Dictionary -> Dictionary -> Bool)
-> (Dictionary -> Dictionary -> Bool) -> Eq Dictionary
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Dictionary -> Dictionary -> Bool
$c/= :: Dictionary -> Dictionary -> Bool
== :: Dictionary -> Dictionary -> Bool
$c== :: Dictionary -> Dictionary -> Bool
Eq)
instance Show Dictionary where
show :: Dictionary -> String
show (Dictionary kt :: Type
kt vt :: Type
vt xs :: Map Atom Value
xs) = Bool -> Value -> String
showValue Bool
True (Type -> Type -> Map Atom Value -> Value
ValueMap Type
kt Type
vt Map Atom Value
xs)
instance IsVariant Dictionary where
toVariant :: Dictionary -> Variant
toVariant (Dictionary kt :: Type
kt vt :: Type
vt xs :: Map Atom Value
xs) = Value -> Variant
Variant (Type -> Type -> Map Atom Value -> Value
ValueMap Type
kt Type
vt Map Atom Value
xs)
fromVariant :: Variant -> Maybe Dictionary
fromVariant (Variant (ValueMap kt :: Type
kt vt :: Type
vt xs :: Map Atom Value
xs)) = Dictionary -> Maybe Dictionary
forall a. a -> Maybe a
Just (Type -> Type -> Map Atom Value -> Dictionary
Dictionary Type
kt Type
vt Map Atom Value
xs)
fromVariant _ = Maybe Dictionary
forall a. Maybe a
Nothing
dictionaryItems :: Dictionary -> [(Variant, Variant)]
dictionaryItems :: Dictionary -> [(Variant, Variant)]
dictionaryItems (Dictionary _ _ xs :: Map Atom Value
xs) = do
(k :: Atom
k, v :: Value
v) <- Map Atom Value -> [(Atom, Value)]
forall k a. Map k a -> [(k, a)]
Data.Map.toList Map Atom Value
xs
(Variant, Variant) -> [(Variant, Variant)]
forall (m :: * -> *) a. Monad m => a -> m a
return (Value -> Variant
Variant (Atom -> Value
ValueAtom Atom
k), Value -> Variant
Variant Value
v)
instance (IsValue a1, IsValue a2, IsValue a3) => IsValue (a1, a2, a3) where
typeOf_ :: Proxy (a1, a2, a3) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
]
toValue :: (a1, a2, a3) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3]
fromValue :: Value -> Maybe (a1, a2, a3)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
(a1, a2, a3) -> Maybe (a1, a2, a3)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3')
fromValue _ = Maybe (a1, a2, a3)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4) => IsValue (a1, a2, a3, a4) where
typeOf_ :: Proxy (a1, a2, a3, a4) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
]
toValue :: (a1, a2, a3, a4) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4]
fromValue :: Value -> Maybe (a1, a2, a3, a4)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
(a1, a2, a3, a4) -> Maybe (a1, a2, a3, a4)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4')
fromValue _ = Maybe (a1, a2, a3, a4)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5) => IsValue (a1, a2, a3, a4, a5) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
]
toValue :: (a1, a2, a3, a4, a5) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
(a1, a2, a3, a4, a5) -> Maybe (a1, a2, a3, a4, a5)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5')
fromValue _ = Maybe (a1, a2, a3, a4, a5)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6) => IsValue (a1, a2, a3, a4, a5, a6) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
]
toValue :: (a1, a2, a3, a4, a5, a6) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
(a1, a2, a3, a4, a5, a6) -> Maybe (a1, a2, a3, a4, a5, a6)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7) => IsValue (a1, a2, a3, a4, a5, a6, a7) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6, a7)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
(a1, a2, a3, a4, a5, a6, a7) -> Maybe (a1, a2, a3, a4, a5, a6, a7)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
(a1, a2, a3, a4, a5, a6, a7, a8)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
(a1, a2, a3, a4, a5, a6, a7, a8, a9)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9, IsValue a10) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
, Proxy a10 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a10
forall k (t :: k). Proxy t
Proxy :: Proxy a10)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9, a10 -> Value
forall a. IsValue a => a -> Value
toValue a10
a10]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
a10
a10' <- Value -> Maybe a10
forall a. IsValue a => Value -> Maybe a
fromValue Value
a10
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9, IsValue a10, IsValue a11) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
, Proxy a10 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a10
forall k (t :: k). Proxy t
Proxy :: Proxy a10)
, Proxy a11 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a11
forall k (t :: k). Proxy t
Proxy :: Proxy a11)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9, a10 -> Value
forall a. IsValue a => a -> Value
toValue a10
a10, a11 -> Value
forall a. IsValue a => a -> Value
toValue a11
a11]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
a10
a10' <- Value -> Maybe a10
forall a. IsValue a => Value -> Maybe a
fromValue Value
a10
a11
a11' <- Value -> Maybe a11
forall a. IsValue a => Value -> Maybe a
fromValue Value
a11
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9, IsValue a10, IsValue a11, IsValue a12) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
, Proxy a10 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a10
forall k (t :: k). Proxy t
Proxy :: Proxy a10)
, Proxy a11 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a11
forall k (t :: k). Proxy t
Proxy :: Proxy a11)
, Proxy a12 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a12
forall k (t :: k). Proxy t
Proxy :: Proxy a12)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9, a10 -> Value
forall a. IsValue a => a -> Value
toValue a10
a10, a11 -> Value
forall a. IsValue a => a -> Value
toValue a11
a11, a12 -> Value
forall a. IsValue a => a -> Value
toValue a12
a12]
fromValue :: Value -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
a10
a10' <- Value -> Maybe a10
forall a. IsValue a => Value -> Maybe a
fromValue Value
a10
a11
a11' <- Value -> Maybe a11
forall a. IsValue a => Value -> Maybe a
fromValue Value
a11
a12
a12' <- Value -> Maybe a12
forall a. IsValue a => Value -> Maybe a
fromValue Value
a12
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9, IsValue a10, IsValue a11, IsValue a12, IsValue a13) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
-> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
, Proxy a10 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a10
forall k (t :: k). Proxy t
Proxy :: Proxy a10)
, Proxy a11 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a11
forall k (t :: k). Proxy t
Proxy :: Proxy a11)
, Proxy a12 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a12
forall k (t :: k). Proxy t
Proxy :: Proxy a12)
, Proxy a13 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a13
forall k (t :: k). Proxy t
Proxy :: Proxy a13)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) -> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12, a13 :: a13
a13) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9, a10 -> Value
forall a. IsValue a => a -> Value
toValue a10
a10, a11 -> Value
forall a. IsValue a => a -> Value
toValue a11
a11, a12 -> Value
forall a. IsValue a => a -> Value
toValue a12
a12, a13 -> Value
forall a. IsValue a => a -> Value
toValue a13
a13]
fromValue :: Value
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12, a13 :: Value
a13]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
a10
a10' <- Value -> Maybe a10
forall a. IsValue a => Value -> Maybe a
fromValue Value
a10
a11
a11' <- Value -> Maybe a11
forall a. IsValue a => Value -> Maybe a
fromValue Value
a11
a12
a12' <- Value -> Maybe a12
forall a. IsValue a => Value -> Maybe a
fromValue Value
a12
a13
a13' <- Value -> Maybe a13
forall a. IsValue a => Value -> Maybe a
fromValue Value
a13
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12', a13
a13')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9, IsValue a10, IsValue a11, IsValue a12, IsValue a13, IsValue a14) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) where
typeOf_ :: Proxy (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
, Proxy a10 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a10
forall k (t :: k). Proxy t
Proxy :: Proxy a10)
, Proxy a11 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a11
forall k (t :: k). Proxy t
Proxy :: Proxy a11)
, Proxy a12 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a12
forall k (t :: k). Proxy t
Proxy :: Proxy a12)
, Proxy a13 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a13
forall k (t :: k). Proxy t
Proxy :: Proxy a13)
, Proxy a14 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a14
forall k (t :: k). Proxy t
Proxy :: Proxy a14)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12, a13 :: a13
a13, a14 :: a14
a14) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9, a10 -> Value
forall a. IsValue a => a -> Value
toValue a10
a10, a11 -> Value
forall a. IsValue a => a -> Value
toValue a11
a11, a12 -> Value
forall a. IsValue a => a -> Value
toValue a12
a12, a13 -> Value
forall a. IsValue a => a -> Value
toValue a13
a13, a14 -> Value
forall a. IsValue a => a -> Value
toValue a14
a14]
fromValue :: Value
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12, a13 :: Value
a13, a14 :: Value
a14]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
a10
a10' <- Value -> Maybe a10
forall a. IsValue a => Value -> Maybe a
fromValue Value
a10
a11
a11' <- Value -> Maybe a11
forall a. IsValue a => Value -> Maybe a
fromValue Value
a11
a12
a12' <- Value -> Maybe a12
forall a. IsValue a => Value -> Maybe a
fromValue Value
a12
a13
a13' <- Value -> Maybe a13
forall a. IsValue a => Value -> Maybe a
fromValue Value
a13
a14
a14' <- Value -> Maybe a14
forall a. IsValue a => Value -> Maybe a
fromValue Value
a14
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12', a13
a13', a14
a14')
fromValue _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
forall a. Maybe a
Nothing
instance (IsValue a1, IsValue a2, IsValue a3, IsValue a4, IsValue a5, IsValue a6, IsValue a7, IsValue a8, IsValue a9, IsValue a10, IsValue a11, IsValue a12, IsValue a13, IsValue a14, IsValue a15) => IsValue (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) where
typeOf_ :: Proxy
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
-> Type
typeOf_ _ = [Type] -> Type
TypeStructure
[ Proxy a1 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a1
forall k (t :: k). Proxy t
Proxy :: Proxy a1)
, Proxy a2 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a2
forall k (t :: k). Proxy t
Proxy :: Proxy a2)
, Proxy a3 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a3
forall k (t :: k). Proxy t
Proxy :: Proxy a3)
, Proxy a4 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a4
forall k (t :: k). Proxy t
Proxy :: Proxy a4)
, Proxy a5 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a5
forall k (t :: k). Proxy t
Proxy :: Proxy a5)
, Proxy a6 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a6
forall k (t :: k). Proxy t
Proxy :: Proxy a6)
, Proxy a7 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a7
forall k (t :: k). Proxy t
Proxy :: Proxy a7)
, Proxy a8 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a8
forall k (t :: k). Proxy t
Proxy :: Proxy a8)
, Proxy a9 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a9
forall k (t :: k). Proxy t
Proxy :: Proxy a9)
, Proxy a10 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a10
forall k (t :: k). Proxy t
Proxy :: Proxy a10)
, Proxy a11 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a11
forall k (t :: k). Proxy t
Proxy :: Proxy a11)
, Proxy a12 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a12
forall k (t :: k). Proxy t
Proxy :: Proxy a12)
, Proxy a13 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a13
forall k (t :: k). Proxy t
Proxy :: Proxy a13)
, Proxy a14 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a14
forall k (t :: k). Proxy t
Proxy :: Proxy a14)
, Proxy a15 -> Type
forall a. IsValue a => Proxy a -> Type
typeOf_ (Proxy a15
forall k (t :: k). Proxy t
Proxy :: Proxy a15)
]
toValue :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
-> Value
toValue (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12, a13 :: a13
a13, a14 :: a14
a14, a15 :: a15
a15) = [Value] -> Value
ValueStructure [a1 -> Value
forall a. IsValue a => a -> Value
toValue a1
a1, a2 -> Value
forall a. IsValue a => a -> Value
toValue a2
a2, a3 -> Value
forall a. IsValue a => a -> Value
toValue a3
a3, a4 -> Value
forall a. IsValue a => a -> Value
toValue a4
a4, a5 -> Value
forall a. IsValue a => a -> Value
toValue a5
a5, a6 -> Value
forall a. IsValue a => a -> Value
toValue a6
a6, a7 -> Value
forall a. IsValue a => a -> Value
toValue a7
a7, a8 -> Value
forall a. IsValue a => a -> Value
toValue a8
a8, a9 -> Value
forall a. IsValue a => a -> Value
toValue a9
a9, a10 -> Value
forall a. IsValue a => a -> Value
toValue a10
a10, a11 -> Value
forall a. IsValue a => a -> Value
toValue a11
a11, a12 -> Value
forall a. IsValue a => a -> Value
toValue a12
a12, a13 -> Value
forall a. IsValue a => a -> Value
toValue a13
a13, a14 -> Value
forall a. IsValue a => a -> Value
toValue a14
a14, a15 -> Value
forall a. IsValue a => a -> Value
toValue a15
a15]
fromValue :: Value
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
fromValue (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12, a13 :: Value
a13, a14 :: Value
a14, a15 :: Value
a15]) = do
a1
a1' <- Value -> Maybe a1
forall a. IsValue a => Value -> Maybe a
fromValue Value
a1
a2
a2' <- Value -> Maybe a2
forall a. IsValue a => Value -> Maybe a
fromValue Value
a2
a3
a3' <- Value -> Maybe a3
forall a. IsValue a => Value -> Maybe a
fromValue Value
a3
a4
a4' <- Value -> Maybe a4
forall a. IsValue a => Value -> Maybe a
fromValue Value
a4
a5
a5' <- Value -> Maybe a5
forall a. IsValue a => Value -> Maybe a
fromValue Value
a5
a6
a6' <- Value -> Maybe a6
forall a. IsValue a => Value -> Maybe a
fromValue Value
a6
a7
a7' <- Value -> Maybe a7
forall a. IsValue a => Value -> Maybe a
fromValue Value
a7
a8
a8' <- Value -> Maybe a8
forall a. IsValue a => Value -> Maybe a
fromValue Value
a8
a9
a9' <- Value -> Maybe a9
forall a. IsValue a => Value -> Maybe a
fromValue Value
a9
a10
a10' <- Value -> Maybe a10
forall a. IsValue a => Value -> Maybe a
fromValue Value
a10
a11
a11' <- Value -> Maybe a11
forall a. IsValue a => Value -> Maybe a
fromValue Value
a11
a12
a12' <- Value -> Maybe a12
forall a. IsValue a => Value -> Maybe a
fromValue Value
a12
a13
a13' <- Value -> Maybe a13
forall a. IsValue a => Value -> Maybe a
fromValue Value
a13
a14
a14' <- Value -> Maybe a14
forall a. IsValue a => Value -> Maybe a
fromValue Value
a14
a15
a15' <- Value -> Maybe a15
forall a. IsValue a => Value -> Maybe a
fromValue Value
a15
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12', a13
a13', a14
a14', a15
a15')
fromValue _ = Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3) => IsVariant (a1, a2, a3) where
toVariant :: (a1, a2, a3) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3])
fromVariant :: Variant -> Maybe (a1, a2, a3)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
(a1, a2, a3) -> Maybe (a1, a2, a3)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3')
fromVariant _ = Maybe (a1, a2, a3)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4) => IsVariant (a1, a2, a3, a4) where
toVariant :: (a1, a2, a3, a4) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
(a1, a2, a3, a4) -> Maybe (a1, a2, a3, a4)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4')
fromVariant _ = Maybe (a1, a2, a3, a4)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5) => IsVariant (a1, a2, a3, a4, a5) where
toVariant :: (a1, a2, a3, a4, a5) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
(a1, a2, a3, a4, a5) -> Maybe (a1, a2, a3, a4, a5)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5')
fromVariant _ = Maybe (a1, a2, a3, a4, a5)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6) => IsVariant (a1, a2, a3, a4, a5, a6) where
toVariant :: (a1, a2, a3, a4, a5, a6) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5, a6)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
(a1, a2, a3, a4, a5, a6) -> Maybe (a1, a2, a3, a4, a5, a6)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7) => IsVariant (a1, a2, a3, a4, a5, a6, a7) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5, a6, a7)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
(a1, a2, a3, a4, a5, a6, a7) -> Maybe (a1, a2, a3, a4, a5, a6, a7)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
(a1, a2, a3, a4, a5, a6, a7, a8)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
(a1, a2, a3, a4, a5, a6, a7, a8, a9)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9, IsVariant a10) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9, a10 -> Value
forall a. IsVariant a => a -> Value
varToVal a10
a10])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
a10
a10' <- (Variant -> Maybe a10
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a10) -> (Value -> Variant) -> Value -> Maybe a10
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a10
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9, IsVariant a10, IsVariant a11) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9, a10 -> Value
forall a. IsVariant a => a -> Value
varToVal a10
a10, a11 -> Value
forall a. IsVariant a => a -> Value
varToVal a11
a11])
fromVariant :: Variant -> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
a10
a10' <- (Variant -> Maybe a10
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a10) -> (Value -> Variant) -> Value -> Maybe a10
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a10
a11
a11' <- (Variant -> Maybe a11
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a11) -> (Value -> Variant) -> Value -> Maybe a11
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a11
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9, IsVariant a10, IsVariant a11, IsVariant a12) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9, a10 -> Value
forall a. IsVariant a => a -> Value
varToVal a10
a10, a11 -> Value
forall a. IsVariant a => a -> Value
varToVal a11
a11, a12 -> Value
forall a. IsVariant a => a -> Value
varToVal a12
a12])
fromVariant :: Variant
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
a10
a10' <- (Variant -> Maybe a10
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a10) -> (Value -> Variant) -> Value -> Maybe a10
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a10
a11
a11' <- (Variant -> Maybe a11
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a11) -> (Value -> Variant) -> Value -> Maybe a11
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a11
a12
a12' <- (Variant -> Maybe a12
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a12) -> (Value -> Variant) -> Value -> Maybe a12
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a12
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9, IsVariant a10, IsVariant a11, IsVariant a12, IsVariant a13) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) -> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12, a13 :: a13
a13) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9, a10 -> Value
forall a. IsVariant a => a -> Value
varToVal a10
a10, a11 -> Value
forall a. IsVariant a => a -> Value
varToVal a11
a11, a12 -> Value
forall a. IsVariant a => a -> Value
varToVal a12
a12, a13 -> Value
forall a. IsVariant a => a -> Value
varToVal a13
a13])
fromVariant :: Variant
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12, a13 :: Value
a13])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
a10
a10' <- (Variant -> Maybe a10
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a10) -> (Value -> Variant) -> Value -> Maybe a10
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a10
a11
a11' <- (Variant -> Maybe a11
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a11) -> (Value -> Variant) -> Value -> Maybe a11
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a11
a12
a12' <- (Variant -> Maybe a12
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a12) -> (Value -> Variant) -> Value -> Maybe a12
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a12
a13
a13' <- (Variant -> Maybe a13
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a13) -> (Value -> Variant) -> Value -> Maybe a13
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a13
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
-> Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12', a13
a13')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9, IsVariant a10, IsVariant a11, IsVariant a12, IsVariant a13, IsVariant a14) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12, a13 :: a13
a13, a14 :: a14
a14) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9, a10 -> Value
forall a. IsVariant a => a -> Value
varToVal a10
a10, a11 -> Value
forall a. IsVariant a => a -> Value
varToVal a11
a11, a12 -> Value
forall a. IsVariant a => a -> Value
varToVal a12
a12, a13 -> Value
forall a. IsVariant a => a -> Value
varToVal a13
a13, a14 -> Value
forall a. IsVariant a => a -> Value
varToVal a14
a14])
fromVariant :: Variant
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12, a13 :: Value
a13, a14 :: Value
a14])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
a10
a10' <- (Variant -> Maybe a10
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a10) -> (Value -> Variant) -> Value -> Maybe a10
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a10
a11
a11' <- (Variant -> Maybe a11
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a11) -> (Value -> Variant) -> Value -> Maybe a11
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a11
a12
a12' <- (Variant -> Maybe a12
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a12) -> (Value -> Variant) -> Value -> Maybe a12
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a12
a13
a13' <- (Variant -> Maybe a13
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a13) -> (Value -> Variant) -> Value -> Maybe a13
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a13
a14
a14' <- (Variant -> Maybe a14
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a14) -> (Value -> Variant) -> Value -> Maybe a14
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a14
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12', a13
a13', a14
a14')
fromVariant _ = Maybe (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
forall a. Maybe a
Nothing
instance (IsVariant a1, IsVariant a2, IsVariant a3, IsVariant a4, IsVariant a5, IsVariant a6, IsVariant a7, IsVariant a8, IsVariant a9, IsVariant a10, IsVariant a11, IsVariant a12, IsVariant a13, IsVariant a14, IsVariant a15) => IsVariant (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) where
toVariant :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
-> Variant
toVariant (a1 :: a1
a1, a2 :: a2
a2, a3 :: a3
a3, a4 :: a4
a4, a5 :: a5
a5, a6 :: a6
a6, a7 :: a7
a7, a8 :: a8
a8, a9 :: a9
a9, a10 :: a10
a10, a11 :: a11
a11, a12 :: a12
a12, a13 :: a13
a13, a14 :: a14
a14, a15 :: a15
a15) = Value -> Variant
Variant ([Value] -> Value
ValueStructure [a1 -> Value
forall a. IsVariant a => a -> Value
varToVal a1
a1, a2 -> Value
forall a. IsVariant a => a -> Value
varToVal a2
a2, a3 -> Value
forall a. IsVariant a => a -> Value
varToVal a3
a3, a4 -> Value
forall a. IsVariant a => a -> Value
varToVal a4
a4, a5 -> Value
forall a. IsVariant a => a -> Value
varToVal a5
a5, a6 -> Value
forall a. IsVariant a => a -> Value
varToVal a6
a6, a7 -> Value
forall a. IsVariant a => a -> Value
varToVal a7
a7, a8 -> Value
forall a. IsVariant a => a -> Value
varToVal a8
a8, a9 -> Value
forall a. IsVariant a => a -> Value
varToVal a9
a9, a10 -> Value
forall a. IsVariant a => a -> Value
varToVal a10
a10, a11 -> Value
forall a. IsVariant a => a -> Value
varToVal a11
a11, a12 -> Value
forall a. IsVariant a => a -> Value
varToVal a12
a12, a13 -> Value
forall a. IsVariant a => a -> Value
varToVal a13
a13, a14 -> Value
forall a. IsVariant a => a -> Value
varToVal a14
a14, a15 -> Value
forall a. IsVariant a => a -> Value
varToVal a15
a15])
fromVariant :: Variant
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
fromVariant (Variant (ValueStructure [a1 :: Value
a1, a2 :: Value
a2, a3 :: Value
a3, a4 :: Value
a4, a5 :: Value
a5, a6 :: Value
a6, a7 :: Value
a7, a8 :: Value
a8, a9 :: Value
a9, a10 :: Value
a10, a11 :: Value
a11, a12 :: Value
a12, a13 :: Value
a13, a14 :: Value
a14, a15 :: Value
a15])) = do
a1
a1' <- (Variant -> Maybe a1
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a1) -> (Value -> Variant) -> Value -> Maybe a1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a1
a2
a2' <- (Variant -> Maybe a2
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a2) -> (Value -> Variant) -> Value -> Maybe a2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a2
a3
a3' <- (Variant -> Maybe a3
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a3) -> (Value -> Variant) -> Value -> Maybe a3
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a3
a4
a4' <- (Variant -> Maybe a4
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a4) -> (Value -> Variant) -> Value -> Maybe a4
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a4
a5
a5' <- (Variant -> Maybe a5
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a5) -> (Value -> Variant) -> Value -> Maybe a5
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a5
a6
a6' <- (Variant -> Maybe a6
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a6) -> (Value -> Variant) -> Value -> Maybe a6
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a6
a7
a7' <- (Variant -> Maybe a7
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a7) -> (Value -> Variant) -> Value -> Maybe a7
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a7
a8
a8' <- (Variant -> Maybe a8
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a8) -> (Value -> Variant) -> Value -> Maybe a8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a8
a9
a9' <- (Variant -> Maybe a9
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a9) -> (Value -> Variant) -> Value -> Maybe a9
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a9
a10
a10' <- (Variant -> Maybe a10
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a10) -> (Value -> Variant) -> Value -> Maybe a10
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a10
a11
a11' <- (Variant -> Maybe a11
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a11) -> (Value -> Variant) -> Value -> Maybe a11
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a11
a12
a12' <- (Variant -> Maybe a12
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a12) -> (Value -> Variant) -> Value -> Maybe a12
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a12
a13
a13' <- (Variant -> Maybe a13
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a13) -> (Value -> Variant) -> Value -> Maybe a13
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a13
a14
a14' <- (Variant -> Maybe a14
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a14) -> (Value -> Variant) -> Value -> Maybe a14
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a14
a15
a15' <- (Variant -> Maybe a15
forall a. IsVariant a => Variant -> Maybe a
fromVariant (Variant -> Maybe a15) -> (Value -> Variant) -> Value -> Maybe a15
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Variant
Variant) Value
a15
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
-> Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
forall (m :: * -> *) a. Monad m => a -> m a
return (a1
a1', a2
a2', a3
a3', a4
a4', a5
a5', a6
a6', a7
a7', a8
a8', a9
a9', a10
a10', a11
a11', a12
a12', a13
a13', a14
a14', a15
a15')
fromVariant _ = Maybe
(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
forall a. Maybe a
Nothing
newtype Serial = Serial Word32
deriving (Serial -> Serial -> Bool
(Serial -> Serial -> Bool)
-> (Serial -> Serial -> Bool) -> Eq Serial
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Serial -> Serial -> Bool
$c/= :: Serial -> Serial -> Bool
== :: Serial -> Serial -> Bool
$c== :: Serial -> Serial -> Bool
Eq, Eq Serial
Eq Serial =>
(Serial -> Serial -> Ordering)
-> (Serial -> Serial -> Bool)
-> (Serial -> Serial -> Bool)
-> (Serial -> Serial -> Bool)
-> (Serial -> Serial -> Bool)
-> (Serial -> Serial -> Serial)
-> (Serial -> Serial -> Serial)
-> Ord Serial
Serial -> Serial -> Bool
Serial -> Serial -> Ordering
Serial -> Serial -> Serial
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Serial -> Serial -> Serial
$cmin :: Serial -> Serial -> Serial
max :: Serial -> Serial -> Serial
$cmax :: Serial -> Serial -> Serial
>= :: Serial -> Serial -> Bool
$c>= :: Serial -> Serial -> Bool
> :: Serial -> Serial -> Bool
$c> :: Serial -> Serial -> Bool
<= :: Serial -> Serial -> Bool
$c<= :: Serial -> Serial -> Bool
< :: Serial -> Serial -> Bool
$c< :: Serial -> Serial -> Bool
compare :: Serial -> Serial -> Ordering
$ccompare :: Serial -> Serial -> Ordering
$cp1Ord :: Eq Serial
Ord, Int -> Serial -> ShowS
[Serial] -> ShowS
Serial -> String
(Int -> Serial -> ShowS)
-> (Serial -> String) -> ([Serial] -> ShowS) -> Show Serial
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Serial] -> ShowS
$cshowList :: [Serial] -> ShowS
show :: Serial -> String
$cshow :: Serial -> String
showsPrec :: Int -> Serial -> ShowS
$cshowsPrec :: Int -> Serial -> ShowS
Show)
instance IsVariant Serial where
toVariant :: Serial -> Variant
toVariant (Serial x :: Word32
x) = Word32 -> Variant
forall a. IsVariant a => a -> Variant
toVariant Word32
x
fromVariant :: Variant -> Maybe Serial
fromVariant = (Word32 -> Serial) -> Maybe Word32 -> Maybe Serial
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Word32 -> Serial
Serial (Maybe Word32 -> Maybe Serial)
-> (Variant -> Maybe Word32) -> Variant -> Maybe Serial
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Variant -> Maybe Word32
forall a. IsVariant a => Variant -> Maybe a
fromVariant
serialValue :: Serial -> Word32
serialValue :: Serial -> Word32
serialValue (Serial x :: Word32
x) = Word32
x
firstSerial :: Serial
firstSerial :: Serial
firstSerial = Word32 -> Serial
Serial 1
nextSerial :: Serial -> Serial
nextSerial :: Serial -> Serial
nextSerial (Serial x :: Word32
x) = Word32 -> Serial
Serial (if Word32
x Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
+ 1 Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== 0
then 1
else Word32
x Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
+ 1)
skipSepBy1 :: Parsec.Parser a -> Parsec.Parser b -> Parsec.Parser ()
skipSepBy1 :: Parser a -> Parser b -> Parser ()
skipSepBy1 p :: Parser a
p sep :: Parser b
sep = do
a
_ <- Parser a
p
Parser a -> Parser ()
forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m ()
Parsec.skipMany (Parser b
sep Parser b -> Parser a -> Parser a
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Parser a
p)
forceParse :: String -> (String -> Maybe a) -> String -> a
forceParse :: String -> (String -> Maybe a) -> String -> a
forceParse label :: String
label parse :: String -> Maybe a
parse str :: String
str = case String -> Maybe a
parse String
str of
Just x :: a
x -> a
x
Nothing -> String -> a
forall a. HasCallStack => String -> a
error ("Invalid " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
label String -> ShowS
forall a. [a] -> [a] -> [a]
++ ": " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
str)
maybeParseString :: MonadThrow m => Parsec.Parser a -> String -> m a
maybeParseString :: Parser a -> String -> m a
maybeParseString parser :: Parser a
parser s :: String
s = case Parser a -> String -> String -> Either ParseError a
forall s t a.
Stream s Identity t =>
Parsec s () a -> String -> s -> Either ParseError a
Parsec.parse Parser a
parser "" String
s of
Left err :: ParseError
err -> IOError -> m a
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (IOError -> m a) -> IOError -> m a
forall a b. (a -> b) -> a -> b
$ String -> IOError
userError (String -> IOError) -> String -> IOError
forall a b. (a -> b) -> a -> b
$ ParseError -> String
forall a. Show a => a -> String
show ParseError
err
Right a :: a
a -> a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
a
THL.deriveLiftMany [''BusName, ''ObjectPath, ''InterfaceName, ''MemberName]