packages feed

wireform-proto-0.2.0.0: src/Proto/Google/Protobuf/Wrappers.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# OPTIONS_GHC -Wno-unused-imports -Wno-unused-matches -Wno-unused-top-binds #-}

{- | Auto-generated protobuf types from package @google.protobuf@.

__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 Proto.Google.Protobuf.Wrappers where

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


{- | Serialized FileDescriptorProto for this .proto file.
Decode with @Proto.Google.Protobuf.Descriptor.decodeMessage@.
-}
fileDescriptorProtoBytes :: ByteString
fileDescriptorProtoBytes = "\x0a\x1e\x67\x6f\x6f\x67\x6c\x65\x2f\x70\x72\x6f\x74\x6f\x62\x75\x66\x2f\x77\x72\x61\x70\x70\x65\x72\x73\x2e\x70\x72\x6f\x74\x6f\x12\x0f\x67\x6f\x6f\x67\x6c\x65\x2e\x70\x72\x6f\x74\x6f\x62\x75\x66\x22\x1c\x0a\x0b\x44\x6f\x75\x62\x6c\x65\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x01\x22\x1b\x0a\x0a\x46\x6c\x6f\x61\x74\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x02\x22\x1b\x0a\x0a\x49\x6e\x74\x36\x34\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x03\x22\x1c\x0a\x0b\x55\x49\x6e\x74\x36\x34\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x04\x22\x1b\x0a\x0a\x49\x6e\x74\x33\x32\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x05\x22\x1c\x0a\x0b\x55\x49\x6e\x74\x33\x32\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x0d\x22\x1a\x0a\x09\x42\x6f\x6f\x6c\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x08\x22\x1c\x0a\x0b\x53\x74\x72\x69\x6e\x67\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x09\x22\x1b\x0a\x0a\x42\x79\x74\x65\x73\x56\x61\x6c\x75\x65\x12\x0d\x0a\x05\x76\x61\x6c\x75\x65\x18\x01\x20\x01\x28\x0c\x62\x06\x70\x72\x6f\x74\x6f\x33"


data DoubleValue = DoubleValue
  { doubleValueValue :: {-# UNPACK #-} !Double
  , doubleValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultDoubleValue :: DoubleValue
defaultDoubleValue =
  DoubleValue
    { doubleValueValue = 0
    , doubleValueUnknownFields = []
    }


instance MessageEncode DoubleValue where
  buildMessage msg =
    (if msg.doubleValueValue == 0 then mempty else archDouble 9 msg.doubleValueValue)
      <> encodeUnknownFields msg.doubleValueUnknownFields


instance MessageSize DoubleValue where
  messageSize msg =
    (if msg.doubleValueValue == 0 then 0 else archFixed64Size)
      + unknownFieldsSize msg.doubleValueUnknownFields


instance MessageDecode DoubleValue where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (DoubleValue {doubleValueValue = acc_0, doubleValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- decodeFieldDouble
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage DoubleValue where
  protoMessageName _ = "google.protobuf.DoubleValue"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultDoubleValue
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType DoubleField
              , fdLabel = LabelOptional
              , fdGet = doubleValueValue
              , fdSet = \v m -> m {doubleValueValue = v}
              }
        )
      ]


instance IsMessage DoubleValue


instance Aeson.ToJSON DoubleValue where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.doubleValueValue
      ]


instance Aeson.FromJSON DoubleValue where
  parseJSON = Aeson.withObject "DoubleValue" $ \obj -> do
    fld_doubleValueValue <- parseFieldMaybe obj "value"
    pure
      defaultDoubleValue
        { doubleValueValue = maybe (doubleValueValue defaultDoubleValue) id fld_doubleValueValue
        , doubleValueUnknownFields = []
        }


instance Hashable DoubleValue where
  hashWithSalt salt msg = hashWithSalt (salt) msg.doubleValueValue


instance Proto.Extension.HasExtensions DoubleValue where
  messageUnknownFields = doubleValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {doubleValueUnknownFields = ufs}


instance Semigroup DoubleValue where
  a <> b =
    DoubleValue
      { doubleValueValue = if b.doubleValueValue == 0 then a.doubleValueValue else b.doubleValueValue
      , doubleValueUnknownFields = a.doubleValueUnknownFields <> b.doubleValueUnknownFields
      }


instance Monoid DoubleValue where
  mempty = defaultDoubleValue


data FloatValue = FloatValue
  { floatValueValue :: {-# UNPACK #-} !Float
  , floatValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultFloatValue :: FloatValue
defaultFloatValue =
  FloatValue
    { floatValueValue = 0
    , floatValueUnknownFields = []
    }


instance MessageEncode FloatValue where
  buildMessage msg =
    (if msg.floatValueValue == 0 then mempty else archFloat 13 msg.floatValueValue)
      <> encodeUnknownFields msg.floatValueUnknownFields


instance MessageSize FloatValue where
  messageSize msg =
    (if msg.floatValueValue == 0 then 0 else archFixed32Size)
      + unknownFieldsSize msg.floatValueUnknownFields


instance MessageDecode FloatValue where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (FloatValue {floatValueValue = acc_0, floatValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- decodeFieldFloat
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage FloatValue where
  protoMessageName _ = "google.protobuf.FloatValue"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultFloatValue
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType FloatField
              , fdLabel = LabelOptional
              , fdGet = floatValueValue
              , fdSet = \v m -> m {floatValueValue = v}
              }
        )
      ]


instance IsMessage FloatValue


instance Aeson.ToJSON FloatValue where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.floatValueValue
      ]


instance Aeson.FromJSON FloatValue where
  parseJSON = Aeson.withObject "FloatValue" $ \obj -> do
    fld_floatValueValue <- parseFieldMaybe obj "value"
    pure
      defaultFloatValue
        { floatValueValue = maybe (floatValueValue defaultFloatValue) id fld_floatValueValue
        , floatValueUnknownFields = []
        }


instance Hashable FloatValue where
  hashWithSalt salt msg = hashWithSalt (salt) msg.floatValueValue


instance Proto.Extension.HasExtensions FloatValue where
  messageUnknownFields = floatValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {floatValueUnknownFields = ufs}


instance Semigroup FloatValue where
  a <> b =
    FloatValue
      { floatValueValue = if b.floatValueValue == 0 then a.floatValueValue else b.floatValueValue
      , floatValueUnknownFields = a.floatValueUnknownFields <> b.floatValueUnknownFields
      }


instance Monoid FloatValue where
  mempty = defaultFloatValue


data Int64Value = Int64Value
  { int64ValueValue :: {-# UNPACK #-} !Int64
  , int64ValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultInt64Value :: Int64Value
defaultInt64Value =
  Int64Value
    { int64ValueValue = 0
    , int64ValueUnknownFields = []
    }


instance MessageEncode Int64Value where
  buildMessage msg =
    (if msg.int64ValueValue == 0 then mempty else archVarint 8 (fromIntegral msg.int64ValueValue))
      <> encodeUnknownFields msg.int64ValueUnknownFields


instance MessageSize Int64Value where
  messageSize msg =
    (if msg.int64ValueValue == 0 then 0 else archVarintSize (fromIntegral msg.int64ValueValue))
      + unknownFieldsSize msg.int64ValueUnknownFields


instance MessageDecode Int64Value where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (Int64Value {int64ValueValue = acc_0, int64ValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- (fromIntegral <$> decodeFieldVarint)
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage Int64Value where
  protoMessageName _ = "google.protobuf.Int64Value"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultInt64Value
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType Int64Field
              , fdLabel = LabelOptional
              , fdGet = int64ValueValue
              , fdSet = \v m -> m {int64ValueValue = v}
              }
        )
      ]


instance IsMessage Int64Value


instance Aeson.ToJSON Int64Value where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.int64ValueValue
      ]


instance Aeson.FromJSON Int64Value where
  parseJSON = Aeson.withObject "Int64Value" $ \obj -> do
    fld_int64ValueValue <- parseFieldMaybe obj "value"
    pure
      defaultInt64Value
        { int64ValueValue = maybe (int64ValueValue defaultInt64Value) id fld_int64ValueValue
        , int64ValueUnknownFields = []
        }


instance Hashable Int64Value where
  hashWithSalt salt msg = hashWithSalt (salt) msg.int64ValueValue


instance Proto.Extension.HasExtensions Int64Value where
  messageUnknownFields = int64ValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {int64ValueUnknownFields = ufs}


instance Semigroup Int64Value where
  a <> b =
    Int64Value
      { int64ValueValue = if b.int64ValueValue == 0 then a.int64ValueValue else b.int64ValueValue
      , int64ValueUnknownFields = a.int64ValueUnknownFields <> b.int64ValueUnknownFields
      }


instance Monoid Int64Value where
  mempty = defaultInt64Value


data UInt64Value = UInt64Value
  { uInt64ValueValue :: {-# UNPACK #-} !Word64
  , uInt64ValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultUInt64Value :: UInt64Value
defaultUInt64Value =
  UInt64Value
    { uInt64ValueValue = 0
    , uInt64ValueUnknownFields = []
    }


instance MessageEncode UInt64Value where
  buildMessage msg =
    (if msg.uInt64ValueValue == 0 then mempty else archVarint 8 msg.uInt64ValueValue)
      <> encodeUnknownFields msg.uInt64ValueUnknownFields


instance MessageSize UInt64Value where
  messageSize msg =
    (if msg.uInt64ValueValue == 0 then 0 else archVarintSize msg.uInt64ValueValue)
      + unknownFieldsSize msg.uInt64ValueUnknownFields


instance MessageDecode UInt64Value where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (UInt64Value {uInt64ValueValue = acc_0, uInt64ValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- decodeFieldVarint
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage UInt64Value where
  protoMessageName _ = "google.protobuf.UInt64Value"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultUInt64Value
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType UInt64Field
              , fdLabel = LabelOptional
              , fdGet = uInt64ValueValue
              , fdSet = \v m -> m {uInt64ValueValue = v}
              }
        )
      ]


instance IsMessage UInt64Value


instance Aeson.ToJSON UInt64Value where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.uInt64ValueValue
      ]


instance Aeson.FromJSON UInt64Value where
  parseJSON = Aeson.withObject "UInt64Value" $ \obj -> do
    fld_uInt64ValueValue <- parseFieldMaybe obj "value"
    pure
      defaultUInt64Value
        { uInt64ValueValue = maybe (uInt64ValueValue defaultUInt64Value) id fld_uInt64ValueValue
        , uInt64ValueUnknownFields = []
        }


instance Hashable UInt64Value where
  hashWithSalt salt msg = hashWithSalt (salt) msg.uInt64ValueValue


instance Proto.Extension.HasExtensions UInt64Value where
  messageUnknownFields = uInt64ValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {uInt64ValueUnknownFields = ufs}


instance Semigroup UInt64Value where
  a <> b =
    UInt64Value
      { uInt64ValueValue = if b.uInt64ValueValue == 0 then a.uInt64ValueValue else b.uInt64ValueValue
      , uInt64ValueUnknownFields = a.uInt64ValueUnknownFields <> b.uInt64ValueUnknownFields
      }


instance Monoid UInt64Value where
  mempty = defaultUInt64Value


data Int32Value = Int32Value
  { int32ValueValue :: {-# UNPACK #-} !Int32
  , int32ValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultInt32Value :: Int32Value
defaultInt32Value =
  Int32Value
    { int32ValueValue = 0
    , int32ValueUnknownFields = []
    }


instance MessageEncode Int32Value where
  buildMessage msg =
    (if msg.int32ValueValue == 0 then mempty else archVarint 8 (fromIntegral msg.int32ValueValue))
      <> encodeUnknownFields msg.int32ValueUnknownFields


instance MessageSize Int32Value where
  messageSize msg =
    (if msg.int32ValueValue == 0 then 0 else archVarintSize (fromIntegral msg.int32ValueValue))
      + unknownFieldsSize msg.int32ValueUnknownFields


instance MessageDecode Int32Value where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (Int32Value {int32ValueValue = acc_0, int32ValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- (fromIntegral <$> decodeFieldVarint)
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage Int32Value where
  protoMessageName _ = "google.protobuf.Int32Value"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultInt32Value
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType Int32Field
              , fdLabel = LabelOptional
              , fdGet = int32ValueValue
              , fdSet = \v m -> m {int32ValueValue = v}
              }
        )
      ]


instance IsMessage Int32Value


instance Aeson.ToJSON Int32Value where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.int32ValueValue
      ]


instance Aeson.FromJSON Int32Value where
  parseJSON = Aeson.withObject "Int32Value" $ \obj -> do
    fld_int32ValueValue <- parseFieldMaybe obj "value"
    pure
      defaultInt32Value
        { int32ValueValue = maybe (int32ValueValue defaultInt32Value) id fld_int32ValueValue
        , int32ValueUnknownFields = []
        }


instance Hashable Int32Value where
  hashWithSalt salt msg = hashWithSalt (salt) msg.int32ValueValue


instance Proto.Extension.HasExtensions Int32Value where
  messageUnknownFields = int32ValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {int32ValueUnknownFields = ufs}


instance Semigroup Int32Value where
  a <> b =
    Int32Value
      { int32ValueValue = if b.int32ValueValue == 0 then a.int32ValueValue else b.int32ValueValue
      , int32ValueUnknownFields = a.int32ValueUnknownFields <> b.int32ValueUnknownFields
      }


instance Monoid Int32Value where
  mempty = defaultInt32Value


data UInt32Value = UInt32Value
  { uInt32ValueValue :: {-# UNPACK #-} !Word32
  , uInt32ValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultUInt32Value :: UInt32Value
defaultUInt32Value =
  UInt32Value
    { uInt32ValueValue = 0
    , uInt32ValueUnknownFields = []
    }


instance MessageEncode UInt32Value where
  buildMessage msg =
    (if msg.uInt32ValueValue == 0 then mempty else archVarint 8 (fromIntegral msg.uInt32ValueValue))
      <> encodeUnknownFields msg.uInt32ValueUnknownFields


instance MessageSize UInt32Value where
  messageSize msg =
    (if msg.uInt32ValueValue == 0 then 0 else archVarintSize (fromIntegral msg.uInt32ValueValue))
      + unknownFieldsSize msg.uInt32ValueUnknownFields


instance MessageDecode UInt32Value where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop 0 []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (UInt32Value {uInt32ValueValue = acc_0, uInt32ValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- (fromIntegral <$> decodeFieldVarint)
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage UInt32Value where
  protoMessageName _ = "google.protobuf.UInt32Value"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultUInt32Value
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType UInt32Field
              , fdLabel = LabelOptional
              , fdGet = uInt32ValueValue
              , fdSet = \v m -> m {uInt32ValueValue = v}
              }
        )
      ]


instance IsMessage UInt32Value


instance Aeson.ToJSON UInt32Value where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.uInt32ValueValue
      ]


instance Aeson.FromJSON UInt32Value where
  parseJSON = Aeson.withObject "UInt32Value" $ \obj -> do
    fld_uInt32ValueValue <- parseFieldMaybe obj "value"
    pure
      defaultUInt32Value
        { uInt32ValueValue = maybe (uInt32ValueValue defaultUInt32Value) id fld_uInt32ValueValue
        , uInt32ValueUnknownFields = []
        }


instance Hashable UInt32Value where
  hashWithSalt salt msg = hashWithSalt (salt) msg.uInt32ValueValue


instance Proto.Extension.HasExtensions UInt32Value where
  messageUnknownFields = uInt32ValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {uInt32ValueUnknownFields = ufs}


instance Semigroup UInt32Value where
  a <> b =
    UInt32Value
      { uInt32ValueValue = if b.uInt32ValueValue == 0 then a.uInt32ValueValue else b.uInt32ValueValue
      , uInt32ValueUnknownFields = a.uInt32ValueUnknownFields <> b.uInt32ValueUnknownFields
      }


instance Monoid UInt32Value where
  mempty = defaultUInt32Value


data BoolValue = BoolValue
  { boolValueValue :: {-# UNPACK #-} !Bool
  , boolValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultBoolValue :: BoolValue
defaultBoolValue =
  BoolValue
    { boolValueValue = False
    , boolValueUnknownFields = []
    }


instance MessageEncode BoolValue where
  buildMessage msg =
    (if msg.boolValueValue == False then mempty else archBool 8 msg.boolValueValue)
      <> encodeUnknownFields msg.boolValueUnknownFields


instance MessageSize BoolValue where
  messageSize msg =
    (if msg.boolValueValue == False then 0 else archBoolSize)
      + unknownFieldsSize msg.boolValueUnknownFields


instance MessageDecode BoolValue where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop False []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (BoolValue {boolValueValue = acc_0, boolValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- decodeFieldBool
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage BoolValue where
  protoMessageName _ = "google.protobuf.BoolValue"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultBoolValue
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType BoolField
              , fdLabel = LabelOptional
              , fdGet = boolValueValue
              , fdSet = \v m -> m {boolValueValue = v}
              }
        )
      ]


instance IsMessage BoolValue


instance Aeson.ToJSON BoolValue where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.boolValueValue
      ]


instance Aeson.FromJSON BoolValue where
  parseJSON = Aeson.withObject "BoolValue" $ \obj -> do
    fld_boolValueValue <- parseFieldMaybe obj "value"
    pure
      defaultBoolValue
        { boolValueValue = maybe (boolValueValue defaultBoolValue) id fld_boolValueValue
        , boolValueUnknownFields = []
        }


instance Hashable BoolValue where
  hashWithSalt salt msg = hashWithSalt (salt) msg.boolValueValue


instance Proto.Extension.HasExtensions BoolValue where
  messageUnknownFields = boolValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {boolValueUnknownFields = ufs}


instance Semigroup BoolValue where
  a <> b =
    BoolValue
      { boolValueValue = if b.boolValueValue == False then a.boolValueValue else b.boolValueValue
      , boolValueUnknownFields = a.boolValueUnknownFields <> b.boolValueUnknownFields
      }


instance Monoid BoolValue where
  mempty = defaultBoolValue


data StringValue = StringValue
  { stringValueValue :: !Text
  , stringValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultStringValue :: StringValue
defaultStringValue =
  StringValue
    { stringValueValue = ""
    , stringValueUnknownFields = []
    }


instance MessageEncode StringValue where
  buildMessage msg =
    (if msg.stringValueValue == T.empty then mempty else archString 10 msg.stringValueValue)
      <> encodeUnknownFields msg.stringValueUnknownFields


instance MessageSize StringValue where
  messageSize msg =
    (if msg.stringValueValue == T.empty then 0 else archStringSize msg.stringValueValue)
      + unknownFieldsSize msg.stringValueUnknownFields


instance MessageDecode StringValue where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop "" []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (StringValue {stringValueValue = acc_0, stringValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- decodeFieldString
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage StringValue where
  protoMessageName _ = "google.protobuf.StringValue"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultStringValue
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType StringField
              , fdLabel = LabelOptional
              , fdGet = stringValueValue
              , fdSet = \v m -> m {stringValueValue = v}
              }
        )
      ]


instance IsMessage StringValue


instance Aeson.ToJSON StringValue where
  toJSON msg =
    jsonObject
      [ "value" .=: msg.stringValueValue
      ]


instance Aeson.FromJSON StringValue where
  parseJSON = Aeson.withObject "StringValue" $ \obj -> do
    fld_stringValueValue <- parseFieldMaybe obj "value"
    pure
      defaultStringValue
        { stringValueValue = maybe (stringValueValue defaultStringValue) id fld_stringValueValue
        , stringValueUnknownFields = []
        }


instance Hashable StringValue where
  hashWithSalt salt msg = hashWithSalt (salt) msg.stringValueValue


instance Proto.Extension.HasExtensions StringValue where
  messageUnknownFields = stringValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {stringValueUnknownFields = ufs}


instance Semigroup StringValue where
  a <> b =
    StringValue
      { stringValueValue = if b.stringValueValue == "" then a.stringValueValue else b.stringValueValue
      , stringValueUnknownFields = a.stringValueUnknownFields <> b.stringValueUnknownFields
      }


instance Monoid StringValue where
  mempty = defaultStringValue


data BytesValue = BytesValue
  { bytesValueValue :: !ByteString
  , bytesValueUnknownFields :: ![UnknownField]
  }
  deriving stock (Show, Eq, Generic)
  deriving anyclass (NFData)


defaultBytesValue :: BytesValue
defaultBytesValue =
  BytesValue
    { bytesValueValue = ""
    , bytesValueUnknownFields = []
    }


instance MessageEncode BytesValue where
  buildMessage msg =
    (if BS.null msg.bytesValueValue then mempty else archBytes 10 msg.bytesValueValue)
      <> encodeUnknownFields msg.bytesValueUnknownFields


instance MessageSize BytesValue where
  messageSize msg =
    (if BS.null msg.bytesValueValue then 0 else archBytesSize msg.bytesValueValue)
      + unknownFieldsSize msg.bytesValueUnknownFields


instance MessageDecode BytesValue where
  {-# INLINE messageDecoder #-}
  messageDecoder = loop "" []
    where
      loop acc_0 acc_unknown_ =
        withTagM
          (pure (BytesValue {bytesValueValue = acc_0, bytesValueUnknownFields = reverse acc_unknown_}))
          ( \fn wt -> case fn of
              1 -> do
                v <- decodeFieldBytes
                loop v acc_unknown_
              _ -> do
                uf <- captureUnknownField fn (toEnum wt)
                loop acc_0 (uf : acc_unknown_)
          )


instance ProtoMessage BytesValue where
  protoMessageName _ = "google.protobuf.BytesValue"
  protoPackageName _ = "google.protobuf"
  protoDefaultValue = defaultBytesValue
  protoFileDescriptorBytes _ = fileDescriptorProtoBytes
  protoFieldDescriptors _ =
    Map.fromList
      [
        ( 1
        , SomeField
            FieldDescriptor
              { fdName = "value"
              , fdNumber = 1
              , fdTypeDesc = ScalarType BytesField
              , fdLabel = LabelOptional
              , fdGet = bytesValueValue
              , fdSet = \v m -> m {bytesValueValue = v}
              }
        )
      ]


instance IsMessage BytesValue


instance Aeson.ToJSON BytesValue where
  toJSON msg =
    jsonObject
      [ bytesFieldToJSON "value" msg.bytesValueValue
      ]


instance Aeson.FromJSON BytesValue where
  parseJSON = Aeson.withObject "BytesValue" $ \obj -> do
    fld_bytesValueValue <- parseBytesFieldMaybe obj "value"
    pure
      defaultBytesValue
        { bytesValueValue = maybe (bytesValueValue defaultBytesValue) id fld_bytesValueValue
        , bytesValueUnknownFields = []
        }


instance Hashable BytesValue where
  hashWithSalt salt msg = hashWithSalt (salt) msg.bytesValueValue


instance Proto.Extension.HasExtensions BytesValue where
  messageUnknownFields = bytesValueUnknownFields
  setMessageUnknownFields !ufs msg = msg {bytesValueUnknownFields = ufs}


instance Semigroup BytesValue where
  a <> b =
    BytesValue
      { bytesValueValue = if b.bytesValueValue == "" then a.bytesValueValue else b.bytesValueValue
      , bytesValueUnknownFields = a.bytesValueUnknownFields <> b.bytesValueUnknownFields
      }


instance Monoid BytesValue where
  mempty = defaultBytesValue