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