{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DeriveGeneric #-}
{-# OPTIONS_GHC -Wno-unused-imports #-}
module Capnp.Capnp.Json.Pure (JsonValue(..), JsonValue'Call(..), JsonValue'Field(..)
) where
import Data.Int
import Data.Word
import Data.Default (Default(def))
import GHC.Generics (Generic)
import Data.Capnp.Basics.Pure (Data, Text)
import Control.Monad.Catch (MonadThrow)
import Data.Capnp.TraversalLimit (MonadLimit)
import Control.Monad (forM_)
import qualified Data.Capnp.Message as M'
import qualified Data.Capnp.Untyped as U'
import qualified Data.Capnp.Untyped.Pure as PU'
import qualified Data.Capnp.GenHelpers.Pure as PH'
import qualified Data.Capnp.Classes as C'
import qualified Data.Vector as V
import qualified Data.ByteString as BS
import qualified Capnp.ById.X8ef99297a43a5e34
import qualified Capnp.ById.Xbdf87d7bb8304e81.Pure
import qualified Capnp.ById.Xbdf87d7bb8304e81
data JsonValue
= JsonValue'null
| JsonValue'boolean (Bool)
| JsonValue'number (Double)
| JsonValue'string (Text)
| JsonValue'array (PU'.ListOf (JsonValue))
| JsonValue'object (PU'.ListOf (JsonValue'Field))
| JsonValue'call (JsonValue'Call)
| JsonValue'unknown' Word16
deriving(Show,Read,Eq,Generic)
instance C'.Decerialize JsonValue where
type Cerial msg JsonValue = Capnp.ById.X8ef99297a43a5e34.JsonValue msg
decerialize raw = do
raw <- Capnp.ById.X8ef99297a43a5e34.get_JsonValue' raw
case raw of
Capnp.ById.X8ef99297a43a5e34.JsonValue'null -> pure JsonValue'null
Capnp.ById.X8ef99297a43a5e34.JsonValue'boolean val -> pure (JsonValue'boolean val)
Capnp.ById.X8ef99297a43a5e34.JsonValue'number val -> pure (JsonValue'number val)
Capnp.ById.X8ef99297a43a5e34.JsonValue'string val -> JsonValue'string <$> C'.decerialize val
Capnp.ById.X8ef99297a43a5e34.JsonValue'array val -> JsonValue'array <$> C'.decerialize val
Capnp.ById.X8ef99297a43a5e34.JsonValue'object val -> JsonValue'object <$> C'.decerialize val
Capnp.ById.X8ef99297a43a5e34.JsonValue'call val -> JsonValue'call <$> C'.decerialize val
Capnp.ById.X8ef99297a43a5e34.JsonValue'unknown' val -> pure $ JsonValue'unknown' val
instance C'.Marshal JsonValue where
marshalInto raw value = do
case value of
JsonValue'null -> Capnp.ById.X8ef99297a43a5e34.set_JsonValue'null raw
JsonValue'boolean arg_ -> Capnp.ById.X8ef99297a43a5e34.set_JsonValue'boolean raw arg_
JsonValue'number arg_ -> Capnp.ById.X8ef99297a43a5e34.set_JsonValue'number raw arg_
JsonValue'string arg_ -> do
field_ <- C'.cerialize (U'.message raw) arg_
Capnp.ById.X8ef99297a43a5e34.set_JsonValue'string raw field_
JsonValue'array arg_ -> do
let len_ = V.length arg_
field_ <- Capnp.ById.X8ef99297a43a5e34.new_JsonValue'array len_ raw
forM_ [0..len_ - 1] $ \i -> do
elt <- C'.index i field_
C'.marshalInto elt (arg_ V.! i)
JsonValue'object arg_ -> do
let len_ = V.length arg_
field_ <- Capnp.ById.X8ef99297a43a5e34.new_JsonValue'object len_ raw
forM_ [0..len_ - 1] $ \i -> do
elt <- C'.index i field_
C'.marshalInto elt (arg_ V.! i)
JsonValue'call arg_ -> do
field_ <- Capnp.ById.X8ef99297a43a5e34.new_JsonValue'call raw
C'.marshalInto field_ arg_
JsonValue'unknown' arg_ -> Capnp.ById.X8ef99297a43a5e34.set_JsonValue'unknown' raw arg_
instance C'.Cerialize s JsonValue
instance C'.FromStruct M'.ConstMsg JsonValue where
fromStruct struct = do
raw <- C'.fromStruct struct
C'.decerialize (raw :: Capnp.ById.X8ef99297a43a5e34.JsonValue M'.ConstMsg)
instance Default JsonValue where
def = PH'.defaultStruct
data JsonValue'Call
= JsonValue'Call
{function :: Text,
params :: PU'.ListOf (JsonValue)}
deriving(Show,Read,Eq,Generic)
instance C'.Decerialize JsonValue'Call where
type Cerial msg JsonValue'Call = Capnp.ById.X8ef99297a43a5e34.JsonValue'Call msg
decerialize raw = do
JsonValue'Call <$>
(Capnp.ById.X8ef99297a43a5e34.get_JsonValue'Call'function raw >>= C'.decerialize) <*>
(Capnp.ById.X8ef99297a43a5e34.get_JsonValue'Call'params raw >>= C'.decerialize)
instance C'.Marshal JsonValue'Call where
marshalInto raw value = do
case value of
JsonValue'Call{..} -> do
field_ <- C'.cerialize (U'.message raw) function
Capnp.ById.X8ef99297a43a5e34.set_JsonValue'Call'function raw field_
let len_ = V.length params
field_ <- Capnp.ById.X8ef99297a43a5e34.new_JsonValue'Call'params len_ raw
forM_ [0..len_ - 1] $ \i -> do
elt <- C'.index i field_
C'.marshalInto elt (params V.! i)
instance C'.Cerialize s JsonValue'Call
instance C'.FromStruct M'.ConstMsg JsonValue'Call where
fromStruct struct = do
raw <- C'.fromStruct struct
C'.decerialize (raw :: Capnp.ById.X8ef99297a43a5e34.JsonValue'Call M'.ConstMsg)
instance Default JsonValue'Call where
def = PH'.defaultStruct
data JsonValue'Field
= JsonValue'Field
{name :: Text,
value :: JsonValue}
deriving(Show,Read,Eq,Generic)
instance C'.Decerialize JsonValue'Field where
type Cerial msg JsonValue'Field = Capnp.ById.X8ef99297a43a5e34.JsonValue'Field msg
decerialize raw = do
JsonValue'Field <$>
(Capnp.ById.X8ef99297a43a5e34.get_JsonValue'Field'name raw >>= C'.decerialize) <*>
(Capnp.ById.X8ef99297a43a5e34.get_JsonValue'Field'value raw >>= C'.decerialize)
instance C'.Marshal JsonValue'Field where
marshalInto raw value = do
case value of
JsonValue'Field{..} -> do
field_ <- C'.cerialize (U'.message raw) name
Capnp.ById.X8ef99297a43a5e34.set_JsonValue'Field'name raw field_
field_ <- Capnp.ById.X8ef99297a43a5e34.new_JsonValue'Field'value raw
C'.marshalInto field_ value
instance C'.Cerialize s JsonValue'Field
instance C'.FromStruct M'.ConstMsg JsonValue'Field where
fromStruct struct = do
raw <- C'.fromStruct struct
C'.decerialize (raw :: Capnp.ById.X8ef99297a43a5e34.JsonValue'Field M'.ConstMsg)
instance Default JsonValue'Field where
def = PH'.defaultStruct