module Binrep.Via where

import Binrep.CBLen qualified as BR
import Binrep.BLen.Simple qualified as BR.Simple
import Binrep.Put.Mason qualified as BR.Mason
import Binrep.Put.Bytezap qualified as BR.Bytezap
import Binrep.Get.Flatparse qualified as BR.Flatparse

-- | Identity newtype for using with @DerivingVia@.
newtype Binreply a = Binreply { forall a. Binreply a -> a
unBinreply :: a }
    deriving stock Int -> Binreply a -> ShowS
[Binreply a] -> ShowS
Binreply a -> String
(Int -> Binreply a -> ShowS)
-> (Binreply a -> String)
-> ([Binreply a] -> ShowS)
-> Show (Binreply a)
forall a. Show a => Int -> Binreply a -> ShowS
forall a. Show a => [Binreply a] -> ShowS
forall a. Show a => Binreply a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Binreply a -> ShowS
showsPrec :: Int -> Binreply a -> ShowS
$cshow :: forall a. Show a => Binreply a -> String
show :: Binreply a -> String
$cshowList :: forall a. Show a => [Binreply a] -> ShowS
showList :: [Binreply a] -> ShowS
Show
    deriving (IsCBLen (Binreply a)
forall {k} (a :: k). IsCBLen a
BR.IsCBLen, Binreply a -> Int
(Binreply a -> Int) -> BLen (Binreply a)
forall a. BLen a => Binreply a -> Int
forall a. (a -> Int) -> BLen a
$cblen :: forall a. BLen a => Binreply a -> Int
blen :: Binreply a -> Int
BR.Simple.BLen, Binreply a -> Builder
(Binreply a -> Builder) -> Put (Binreply a)
forall a. Put a => Binreply a -> Builder
forall a. (a -> Builder) -> Put a
$cput :: forall a. Put a => Binreply a -> Builder
put :: Binreply a -> Builder
BR.Mason.Put, Binreply a -> Poke
(Binreply a -> Poke) -> Put (Binreply a)
forall a. Put a => Binreply a -> Poke
forall a. (a -> Poke) -> Put a
$cput :: forall a. Put a => Binreply a -> Poke
put :: Binreply a -> Poke
BR.Bytezap.Put, Getter (Binreply a)
Getter (Binreply a) -> Get (Binreply a)
forall a. Getter a -> Get a
forall a. Get a => Getter (Binreply a)
$cget :: forall a. Get a => Getter (Binreply a)
get :: Getter (Binreply a)
BR.Flatparse.Get) via a