packages feed

wireform-proto-0.3.0.0: test-regression/Generated/Edition2024.hs

{-# LANGUAGE StrictData #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# OPTIONS_GHC -Wno-unused-imports -Wno-unused-matches -Wno-unused-top-binds #-}
-- | Auto-generated protobuf types.
--
-- __THIS FILE IS AUTO-GENERATED BY wireform. DO NOT EDIT.__
--
-- Any manual changes will be overwritten the next time code
-- generation is run.  To modify the types or instances, edit the
-- @.proto@ source file and re-run the code generator.
module Generated.Edition2024 where

import Data.ByteString (ByteString)
import qualified Data.ByteString as BS
import qualified Wireform.Builder as B
import Data.Int (Int32, Int64)
import Data.Text (Text)
import qualified Data.Text as T
import Data.Word (Word32, Word64)
import qualified Data.Map.Strict as Map
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as VU
import GHC.Generics (Generic)
import Control.DeepSeq (NFData(..))
import Data.Hashable (Hashable(..))
import Proto.Encode
import Proto.Decode
import qualified Data.Aeson as Aeson
import qualified Data.Aeson.Types as Aeson
import qualified Data.Aeson.Key as AesonKey
import qualified Data.Aeson.KeyMap as AesonKM
import Proto.Internal.JSON (jsonObject, (.=:), parseFieldMaybe, bytesFieldToJSON, parseBytesFieldMaybe, bytesMapFieldToJSON, parseBytesMapFieldMaybe, protoBytesToJSON)
import Data.Proxy (Proxy(..))
import Data.Reflection (Given(..), given)
import Proto.Internal.JSON.Extension qualified as PJExt
import Proto.Schema (ProtoMessage(..), SomeFieldDescriptor(..), FieldDescriptor(..), FieldTypeDescriptor(..), ScalarFieldType(..), FieldLabel'(..))
import Proto.Registry (IsMessage)
import Proto.Registry qualified
import qualified Proto.Extension
import Proto.Internal.Wire (Tag(..), WireType(..))
import Proto.Internal.Wire.Encode (putTag, putVarint, putFixed32, putFixed64,
  putFloat, putDouble, putText, putByteString, putLengthDelimited,
  putSVarint32, putSVarint64, putVarintSigned,
  varintSize, tagSize, fieldMessageSize,
  fieldVarintSize, fieldFixed32Size, fieldFixed64Size,
  fieldBoolSize, fieldFloatSize, fieldDoubleSize,
  fieldTextSize, fieldBytesSize,
  fieldSVarint32Size, fieldSVarint64Size,
  varintSize32, zigZag32, zigZag64)
import Proto.Internal.Encode.Archetype (archVarint, archSVarint32, archSVarint64,
  archFixed32, archFixed64, archFloat, archDouble, archBool,
  archString, archBytes, archSubmessage,
  archVarintSize, archStringSize, archBytesSize, archBoolSize,
  archFixed32Size, archFixed64Size, archSubmessageSize)

-- | Serialized FileDescriptorProto for this .proto file.
-- Decode with @Proto.Google.Protobuf.Descriptor.decodeMessage@.
fileDescriptorProtoBytes :: ByteString
fileDescriptorProtoBytes = "\x0a\x11\x65\x64\x69\x74\x69\x6f\x6e\x32\x30\x32\x34\x2e\x70\x72\x6f\x74\x6f\x22\x7b\x0a\x08\x46\x69\x65\x6c\x64\x73\x32\x34\x12\x0d\x0a\x05\x63\x6f\x75\x6e\x74\x18\x01\x20\x01\x28\x05\x12\x16\x0a\x0e\x65\x78\x70\x6c\x69\x63\x69\x74\x5f\x63\x6f\x75\x6e\x74\x18\x02\x20\x01\x28\x05\x12\x14\x0a\x05\x69\x6e\x6e\x65\x72\x18\x03\x20\x01\x28\x0b\x32\x05\x49\x6e\x6e\x65\x72\x1a\x32\x0a\x05\x49\x6e\x6e\x65\x72\x12\x11\x0a\x09\x69\x6e\x68\x65\x72\x69\x74\x65\x64\x18\x01\x20\x01\x28\x05\x12\x16\x0a\x0e\x65\x78\x70\x6c\x69\x63\x69\x74\x5f\x76\x61\x6c\x75\x65\x18\x02\x20\x01\x28\x05\x62\x08\x65\x64\x69\x74\x69\x6f\x6e\x73\x72\x04\x32\x30\x32\x34"


data Fields24 = Fields24
  { fields24Count :: {-# UNPACK #-} !Int32
  , fields24ExplicitCount :: !(Maybe Int32)
  , fields24Inner :: !(Maybe Fields24'Inner)
  , fields24UnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass NFData

data Fields24'Inner = Fields24'Inner
  { fields24InnerInherited :: {-# UNPACK #-} !Int32
  , fields24InnerExplicitValue :: !(Maybe Int32)
  , fields24InnerUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass NFData

defaultFields24'Inner :: Fields24'Inner
defaultFields24'Inner = Fields24'Inner
  { fields24InnerInherited = 0
  , fields24InnerExplicitValue = Nothing
  , fields24InnerUnknownFields = []
  }

instance MessageEncode Fields24'Inner where
  buildMessage msg =
    (if msg.fields24InnerInherited == 0 then mempty else archVarint 8 (fromIntegral msg.fields24InnerInherited))
    <> (maybe mempty (\v -> archVarint 16 (fromIntegral v)) msg.fields24InnerExplicitValue)
    <> encodeUnknownFields msg.fields24InnerUnknownFields

instance MessageSize Fields24'Inner where
  messageSize msg =
    (if msg.fields24InnerInherited == 0 then 0 else archVarintSize (fromIntegral msg.fields24InnerInherited))
    + (maybe 0 (\v -> archVarintSize (fromIntegral v)) msg.fields24InnerExplicitValue)
    + unknownFieldsSize msg.fields24InnerUnknownFields

instance MessageDecode Fields24'Inner where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 Nothing []
    where
      loop acc_0 acc_1 acc_unknown_ = withTagM
        (pure (Fields24'Inner {fields24InnerInherited = acc_0, fields24InnerExplicitValue = acc_1, fields24InnerUnknownFields = reverse acc_unknown_}))
        (\fn wt -> case fn of
          1 -> do
            v <- (fromIntegral <$> decodeFieldVarint)
            loop v acc_1 acc_unknown_
          2 -> do
            v <- (fromIntegral <$> decodeFieldVarint)
            loop acc_0 (Just v) acc_unknown_
          _ -> do
            uf <- captureUnknownField fn (toEnum wt)
            loop acc_0 acc_1 (uf : acc_unknown_))

instance ProtoMessage Fields24'Inner where
  protoMessageName _ = "Fields24.Inner"
  protoPackageName _ = ""
  protoDefaultValue = defaultFields24'Inner
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ = Map.fromList
    [ (1, SomeField FieldDescriptor
        { fdName = "inherited"
        , fdNumber = 1
        , fdTypeDesc = ScalarType Int32Field
        , fdLabel = LabelOptional
        , fdGet = fields24InnerInherited
        , fdSet = \v m -> m { fields24InnerInherited = v }
        }), (2, SomeField FieldDescriptor
        { fdName = "explicit_value"
        , fdNumber = 2
        , fdTypeDesc = ScalarType Int32Field
        , fdLabel = LabelOptional
        , fdGet = fields24InnerExplicitValue
        , fdSet = \v m -> m { fields24InnerExplicitValue = v }
        })
    ]

instance IsMessage Fields24'Inner

instance Aeson.ToJSON Fields24'Inner where
  toJSON msg = jsonObject
      [ "inherited" .=: msg.fields24InnerInherited
      , "explicitValue" .=: msg.fields24InnerExplicitValue
      ]

instance Aeson.FromJSON Fields24'Inner where
  parseJSON = Aeson.withObject "Fields24'Inner" $ \obj -> do
    fld_fields24InnerInherited <- parseFieldMaybe obj "inherited"
    fld_fields24InnerExplicitValue <- parseFieldMaybe obj "explicitValue"
    pure defaultFields24'Inner
      { fields24InnerInherited = maybe (fields24InnerInherited defaultFields24'Inner) id fld_fields24InnerInherited
      , fields24InnerExplicitValue = maybe (fields24InnerExplicitValue defaultFields24'Inner) id fld_fields24InnerExplicitValue
      , fields24InnerUnknownFields = []
      }

instance Hashable Fields24'Inner where
  hashWithSalt salt msg = hashWithSalt (hashWithSalt (salt) msg.fields24InnerInherited) msg.fields24InnerExplicitValue

instance Proto.Extension.HasExtensions Fields24'Inner where
  messageUnknownFields = fields24InnerUnknownFields
  setMessageUnknownFields !ufs msg = msg { fields24InnerUnknownFields = ufs }

instance Semigroup Fields24'Inner where
  a <> b = Fields24'Inner
    { fields24InnerInherited = if b.fields24InnerInherited == 0 then a.fields24InnerInherited else b.fields24InnerInherited
    , fields24InnerExplicitValue = case b.fields24InnerExplicitValue of { Nothing -> a.fields24InnerExplicitValue; x -> x }
    , fields24InnerUnknownFields = a.fields24InnerUnknownFields <> b.fields24InnerUnknownFields
    }

instance Monoid Fields24'Inner where
  mempty = defaultFields24'Inner

defaultFields24 :: Fields24
defaultFields24 = Fields24
  { fields24Count = 0
  , fields24ExplicitCount = Nothing
  , fields24Inner = Nothing
  , fields24UnknownFields = []
  }

instance MessageEncode Fields24 where
  buildMessage msg =
    (if msg.fields24Count == 0 then mempty else archVarint 8 (fromIntegral msg.fields24Count))
    <> (maybe mempty (\v -> archVarint 16 (fromIntegral v)) msg.fields24ExplicitCount)
    <> (maybe mempty (\v -> let sz = messageSize v in archSubmessage 26 sz (buildMessage v)) msg.fields24Inner)
    <> encodeUnknownFields msg.fields24UnknownFields

instance MessageSize Fields24 where
  messageSize msg =
    (if msg.fields24Count == 0 then 0 else archVarintSize (fromIntegral msg.fields24Count))
    + (maybe 0 (\v -> archVarintSize (fromIntegral v)) msg.fields24ExplicitCount)
    + (maybe 0 (\v -> archSubmessageSize (messageSize v)) msg.fields24Inner)
    + unknownFieldsSize msg.fields24UnknownFields

instance MessageDecode Fields24 where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 Nothing Nothing []
    where
      loop acc_0 acc_1 acc_2 acc_unknown_ = withTagM
        (pure (Fields24 {fields24Count = acc_0, fields24ExplicitCount = acc_1, fields24Inner = acc_2, fields24UnknownFields = reverse acc_unknown_}))
        (\fn wt -> case fn of
          1 -> do
            v <- (fromIntegral <$> decodeFieldVarint)
            loop v acc_1 acc_2 acc_unknown_
          2 -> do
            v <- (fromIntegral <$> decodeFieldVarint)
            loop acc_0 (Just v) acc_2 acc_unknown_
          3 -> do
            v <- decodeFieldMessage
            loop acc_0 acc_1 (Just v) acc_unknown_
          _ -> do
            uf <- captureUnknownField fn (toEnum wt)
            loop acc_0 acc_1 acc_2 (uf : acc_unknown_))

instance ProtoMessage Fields24 where
  protoMessageName _ = "Fields24"
  protoPackageName _ = ""
  protoDefaultValue = defaultFields24
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ = Map.fromList
    [ (1, SomeField FieldDescriptor
        { fdName = "count"
        , fdNumber = 1
        , fdTypeDesc = ScalarType Int32Field
        , fdLabel = LabelOptional
        , fdGet = fields24Count
        , fdSet = \v m -> m { fields24Count = v }
        }), (2, SomeField FieldDescriptor
        { fdName = "explicit_count"
        , fdNumber = 2
        , fdTypeDesc = ScalarType Int32Field
        , fdLabel = LabelOptional
        , fdGet = fields24ExplicitCount
        , fdSet = \v m -> m { fields24ExplicitCount = v }
        })
    , (3, SomeField FieldDescriptor
        { fdName = "inner"
        , fdNumber = 3
        , fdTypeDesc = MessageType "Inner"
        , fdLabel = LabelOptional
        , fdGet = fields24Inner
        , fdSet = \v m -> m { fields24Inner = v }
        })
    ]

instance IsMessage Fields24

instance Aeson.ToJSON Fields24 where
  toJSON msg = jsonObject
      [ "count" .=: msg.fields24Count
      , "explicitCount" .=: msg.fields24ExplicitCount
      , "inner" .=: msg.fields24Inner
      ]

instance Aeson.FromJSON Fields24 where
  parseJSON = Aeson.withObject "Fields24" $ \obj -> do
    fld_fields24Count <- parseFieldMaybe obj "count"
    fld_fields24ExplicitCount <- parseFieldMaybe obj "explicitCount"
    fld_fields24Inner <- parseFieldMaybe obj "inner"
    pure defaultFields24
      { fields24Count = maybe (fields24Count defaultFields24) id fld_fields24Count
      , fields24ExplicitCount = maybe (fields24ExplicitCount defaultFields24) id fld_fields24ExplicitCount
      , fields24Inner = maybe (fields24Inner defaultFields24) id fld_fields24Inner
      , fields24UnknownFields = []
      }

instance Hashable Fields24 where
  hashWithSalt salt msg = hashWithSalt (hashWithSalt (hashWithSalt (salt) msg.fields24Count) msg.fields24ExplicitCount) msg.fields24Inner

instance Proto.Extension.HasExtensions Fields24 where
  messageUnknownFields = fields24UnknownFields
  setMessageUnknownFields !ufs msg = msg { fields24UnknownFields = ufs }

instance Semigroup Fields24 where
  a <> b = Fields24
    { fields24Count = if b.fields24Count == 0 then a.fields24Count else b.fields24Count
    , fields24ExplicitCount = case b.fields24ExplicitCount of { Nothing -> a.fields24ExplicitCount; x -> x }
    , fields24Inner = case b.fields24Inner of { Nothing -> a.fields24Inner; x -> x }
    , fields24UnknownFields = a.fields24UnknownFields <> b.fields24UnknownFields
    }

instance Monoid Fields24 where
  mempty = defaultFields24