wireform-proto-0.1.0.0: src/Proto/Google/Protobuf/Compiler/Plugin.hs
{-# LANGUAGE StrictData #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedRecordDot #-}
-- | Auto-generated protobuf types from package @google.protobuf.compiler@.
--
-- __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.Compiler.Plugin 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 (Word8, Word32, Word64)
import qualified Data.IntMap.Strict as IntMap
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.Internal.Encode
import Proto.Internal.Decode
import Proto.Internal.GrowList (GrowList, emptyGrowList, snocGrowList, growListToVector)
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, OneofVariantNullSemantics (..), parseOneofVariants)
import Data.Proxy (Proxy(..))
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,
varintSize32, zigZag32, zigZag64)
import Proto.Internal.Encode.Archetype (archVarint, archSVarint32, archSVarint64,
archFixed32, archFixed64, archFloat, archDouble, archBool,
archString, archBytes, archSubmessage)
import qualified Proto.Google.Protobuf.Reflection.Descriptor as PB_Reflection_Descriptor
-- | Serialized FileDescriptorProto for this .proto file.
-- Decode with @Proto.Decode.decodeMessage@.
fileDescriptorProtoBytes :: ByteString
fileDescriptorProtoBytes = "\x0a\x25\x67\x6f\x6f\x67\x6c\x65\x2f\x70\x72\x6f\x74\x6f\x62\x75\x66\x2f\x63\x6f\x6d\x70\x69\x6c\x65\x72\x2f\x70\x6c\x75\x67\x69\x6e\x2e\x70\x72\x6f\x74\x6f\x12\x18\x67\x6f\x6f\x67\x6c\x65\x2e\x70\x72\x6f\x74\x6f\x62\x75\x66\x2e\x63\x6f\x6d\x70\x69\x6c\x65\x72\x1a\x20\x67\x6f\x6f\x67\x6c\x65\x2f\x70\x72\x6f\x74\x6f\x62\x75\x66\x2f\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x2e\x70\x72\x6f\x74\x6f\x22\x46\x0a\x07\x56\x65\x72\x73\x69\x6f\x6e\x12\x0d\x0a\x05\x6d\x61\x6a\x6f\x72\x18\x01\x20\x01\x28\x05\x12\x0d\x0a\x05\x6d\x69\x6e\x6f\x72\x18\x02\x20\x01\x28\x05\x12\x0d\x0a\x05\x70\x61\x74\x63\x68\x18\x03\x20\x01\x28\x05\x12\x0e\x0a\x06\x73\x75\x66\x66\x69\x78\x18\x04\x20\x01\x28\x09\x22\xc5\x01\x0a\x14\x43\x6f\x64\x65\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x52\x65\x71\x75\x65\x73\x74\x12\x18\x0a\x10\x66\x69\x6c\x65\x5f\x74\x6f\x5f\x67\x65\x6e\x65\x72\x61\x74\x65\x18\x01\x20\x03\x28\x09\x12\x11\x0a\x09\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x18\x02\x20\x01\x28\x09\x12\x27\x0a\x0a\x70\x72\x6f\x74\x6f\x5f\x66\x69\x6c\x65\x18\x0f\x20\x03\x28\x0b\x32\x13\x46\x69\x6c\x65\x44\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x50\x72\x6f\x74\x6f\x12\x34\x0a\x17\x73\x6f\x75\x72\x63\x65\x5f\x66\x69\x6c\x65\x5f\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x73\x18\x11\x20\x03\x28\x0b\x32\x13\x46\x69\x6c\x65\x44\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x50\x72\x6f\x74\x6f\x12\x21\x0a\x10\x63\x6f\x6d\x70\x69\x6c\x65\x72\x5f\x76\x65\x72\x73\x69\x6f\x6e\x18\x03\x20\x01\x28\x0b\x32\x07\x56\x65\x72\x73\x69\x6f\x6e\x22\xd1\x02\x0a\x15\x43\x6f\x64\x65\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x52\x65\x73\x70\x6f\x6e\x73\x65\x12\x0d\x0a\x05\x65\x72\x72\x6f\x72\x18\x01\x20\x01\x28\x09\x12\x1a\x0a\x12\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x5f\x66\x65\x61\x74\x75\x72\x65\x73\x18\x02\x20\x01\x28\x04\x12\x17\x0a\x0f\x6d\x69\x6e\x69\x6d\x75\x6d\x5f\x65\x64\x69\x74\x69\x6f\x6e\x18\x03\x20\x01\x28\x05\x12\x17\x0a\x0f\x6d\x61\x78\x69\x6d\x75\x6d\x5f\x65\x64\x69\x74\x69\x6f\x6e\x18\x04\x20\x01\x28\x05\x12\x12\x0a\x04\x66\x69\x6c\x65\x18\x0f\x20\x03\x28\x0b\x32\x04\x46\x69\x6c\x65\x1a\x6e\x0a\x04\x46\x69\x6c\x65\x12\x0c\x0a\x04\x6e\x61\x6d\x65\x18\x01\x20\x01\x28\x09\x12\x17\x0a\x0f\x69\x6e\x73\x65\x72\x74\x69\x6f\x6e\x5f\x70\x6f\x69\x6e\x74\x18\x02\x20\x01\x28\x09\x12\x0f\x0a\x07\x63\x6f\x6e\x74\x65\x6e\x74\x18\x0f\x20\x01\x28\x09\x12\x2e\x0a\x13\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x5f\x63\x6f\x64\x65\x5f\x69\x6e\x66\x6f\x18\x10\x20\x01\x28\x0b\x32\x11\x47\x65\x6e\x65\x72\x61\x74\x65\x64\x43\x6f\x64\x65\x49\x6e\x66\x6f\x22\x57\x0a\x07\x46\x65\x61\x74\x75\x72\x65\x12\x10\x0a\x0c\x46\x45\x41\x54\x55\x52\x45\x5f\x4e\x4f\x4e\x45\x10\x00\x12\x1b\x0a\x17\x46\x45\x41\x54\x55\x52\x45\x5f\x50\x52\x4f\x54\x4f\x33\x5f\x4f\x50\x54\x49\x4f\x4e\x41\x4c\x10\x01\x12\x1d\x0a\x19\x46\x45\x41\x54\x55\x52\x45\x5f\x53\x55\x50\x50\x4f\x52\x54\x53\x5f\x45\x44\x49\x54\x49\x4f\x4e\x53\x10\x02\x62\x06\x70\x72\x6f\x74\x6f\x32"
-- | The version number of protocol compiler.
data Version = Version
{ versionMajor :: !(Maybe Int32)
, versionMinor :: !(Maybe Int32)
, versionPatch :: !(Maybe Int32)
, versionSuffix :: !(Maybe Text)
-- ^ A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
-- be empty for mainline stable releases.
, versionUnknownFields :: ![UnknownField]
}
deriving stock (Show, Eq, Generic)
deriving anyclass NFData
defaultVersion :: Version
defaultVersion = Version
{ versionMajor = Nothing
, versionMinor = Nothing
, versionPatch = Nothing
, versionSuffix = Nothing
, versionUnknownFields = []
}
instance MessageEncode Version where
buildSized msg =
(maybe mempty (\v -> archVarint 8 (fromIntegral v)) msg.versionMajor)
<> (maybe mempty (\v -> archVarint 16 (fromIntegral v)) msg.versionMinor)
<> (maybe mempty (\v -> archVarint 24 (fromIntegral v)) msg.versionPatch)
<> (maybe mempty (\v -> archString 34 v) msg.versionSuffix)
<> encodeUnknownFieldsSized msg.versionUnknownFields
instance MessageDecode Version where
{-# INLINE messageDecoder #-}
messageDecoder = stage_0 defaultVersion
where
stage_0 msg =
inOrderStage1
(0x8 :: Data.Word.Word8)
(fromIntegral <$> decodeFieldVarint)
(\v -> stage_1 (msg { versionMajor = (Just v)}))
(pure (case msg.versionUnknownFields of { [] -> msg; _ -> msg { versionUnknownFields = reverse (msg.versionUnknownFields) } }))
(loop msg)
stage_1 msg =
inOrderStage1
(0x10 :: Data.Word.Word8)
(fromIntegral <$> decodeFieldVarint)
(\v -> stage_2 (msg { versionMinor = (Just v)}))
(pure (case msg.versionUnknownFields of { [] -> msg; _ -> msg { versionUnknownFields = reverse (msg.versionUnknownFields) } }))
(loop msg)
stage_2 msg =
inOrderStage1
(0x18 :: Data.Word.Word8)
(fromIntegral <$> decodeFieldVarint)
(\v -> stage_3 (msg { versionPatch = (Just v)}))
(pure (case msg.versionUnknownFields of { [] -> msg; _ -> msg { versionUnknownFields = reverse (msg.versionUnknownFields) } }))
(loop msg)
stage_3 msg =
inOrderStage1
(0x22 :: Data.Word.Word8)
decodeFieldString
(\v -> loop (msg { versionSuffix = (Just v)}))
(pure (case msg.versionUnknownFields of { [] -> msg; _ -> msg { versionUnknownFields = reverse (msg.versionUnknownFields) } }))
(loop msg)
loop msg = withTagM
(pure (case msg.versionUnknownFields of { [] -> msg; _ -> msg { versionUnknownFields = reverse (msg.versionUnknownFields) } }))
(\fn wt -> case fn of
1 -> do
v <- (fromIntegral <$> decodeFieldVarint)
loop (msg { versionMajor = (Just v)})
2 -> do
v <- (fromIntegral <$> decodeFieldVarint)
loop (msg { versionMinor = (Just v)})
3 -> do
v <- (fromIntegral <$> decodeFieldVarint)
loop (msg { versionPatch = (Just v)})
4 -> do
v <- decodeFieldString
loop (msg { versionSuffix = (Just v)})
_ -> do
uf <- captureUnknownField fn (Prelude.toEnum wt)
loop (msg { versionUnknownFields = (uf : msg.versionUnknownFields)}))
-- | Field descriptors for 'Version', keyed by proto field number.
--
-- Top-level CAF: allocated lazily on first force, shared on every
-- subsequent 'protoFieldDescriptors' call (no per-call rebuild).
versionFieldDescriptors :: IntMap.IntMap (SomeFieldDescriptor Version)
versionFieldDescriptors =
IntMap.fromList
[ (1, SomeField FieldDescriptor
{ fdName = "major"
, fdNumber = 1
, fdTypeDesc = ScalarType Int32Field
, fdLabel = LabelOptional
, fdGet = versionMajor
, fdSet = \v m -> m { versionMajor = v }
}), (2, SomeField FieldDescriptor
{ fdName = "minor"
, fdNumber = 2
, fdTypeDesc = ScalarType Int32Field
, fdLabel = LabelOptional
, fdGet = versionMinor
, fdSet = \v m -> m { versionMinor = v }
})
, (3, SomeField FieldDescriptor
{ fdName = "patch"
, fdNumber = 3
, fdTypeDesc = ScalarType Int32Field
, fdLabel = LabelOptional
, fdGet = versionPatch
, fdSet = \v m -> m { versionPatch = v }
})
, (4, SomeField FieldDescriptor
{ fdName = "suffix"
, fdNumber = 4
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelOptional
, fdGet = versionSuffix
, fdSet = \v m -> m { versionSuffix = v }
})
]
instance ProtoMessage Version where
protoMessageName _ = "google.protobuf.compiler.Version"
protoPackageName _ = "google.protobuf.compiler"
protoDefaultValue = defaultVersion
protoFileDescriptorBytes _ = fileDescriptorProtoBytes
protoFieldDescriptors _ = versionFieldDescriptors
instance IsMessage Version
instance Aeson.ToJSON Version where
toJSON msg = jsonObject
[ "major" .=: msg.versionMajor
, "minor" .=: msg.versionMinor
, "patch" .=: msg.versionPatch
, "suffix" .=: msg.versionSuffix
]
instance Aeson.FromJSON Version where
parseJSON = Aeson.withObject "Version" $ \obj -> do
fld_versionMajor <- parseFieldMaybe obj "major"
fld_versionMinor <- parseFieldMaybe obj "minor"
fld_versionPatch <- parseFieldMaybe obj "patch"
fld_versionSuffix <- parseFieldMaybe obj "suffix"
pure defaultVersion
{ versionMajor = maybe (versionMajor defaultVersion) id fld_versionMajor
, versionMinor = maybe (versionMinor defaultVersion) id fld_versionMinor
, versionPatch = maybe (versionPatch defaultVersion) id fld_versionPatch
, versionSuffix = maybe (versionSuffix defaultVersion) id fld_versionSuffix
}
instance Hashable Version where
hashWithSalt salt msg = hashWithSalt (hashWithSalt (hashWithSalt (hashWithSalt (salt) msg.versionMajor) msg.versionMinor) msg.versionPatch) msg.versionSuffix
instance Proto.Extension.HasExtensions Version where
messageUnknownFields = versionUnknownFields
setMessageUnknownFields !ufs msg = msg { versionUnknownFields = ufs }
instance Semigroup Version where
a <> b = Version
{ versionMajor = case b.versionMajor of { Nothing -> a.versionMajor; x -> x }
, versionMinor = case b.versionMinor of { Nothing -> a.versionMinor; x -> x }
, versionPatch = case b.versionPatch of { Nothing -> a.versionPatch; x -> x }
, versionSuffix = case b.versionSuffix of { Nothing -> a.versionSuffix; x -> x }
, versionUnknownFields = a.versionUnknownFields <> b.versionUnknownFields
}
instance Monoid Version where
mempty = defaultVersion
-- | An encoded CodeGeneratorRequest is written to the plugin's stdin.
data CodeGeneratorRequest = CodeGeneratorRequest
{ codeGeneratorRequestFileToGenerate :: !(V.Vector Text)
-- ^ The .proto files that were explicitly listed on the command-line. The
-- code generator should generate code only for these files. Each file's
-- descriptor will be included in proto_file, below.
, codeGeneratorRequestParameter :: !(Maybe Text)
-- ^ The generator parameter passed on the command-line.
, codeGeneratorRequestProtoFile :: !(V.Vector PB_Reflection_Descriptor.FileDescriptorProto)
-- ^ FileDescriptorProtos for all files in files_to_generate and everything
-- they import. The files will appear in topological order, so each file
-- appears before any file that imports it.
--
-- Note: the files listed in files_to_generate will include runtime-retention
-- options only, but all other files will include source-retention options.
-- The source_file_descriptors field below is available in case you need
-- source-retention options for files_to_generate.
--
-- protoc guarantees that all proto_files will be written after
-- the fields above, even though this is not technically guaranteed by the
-- protobuf wire format. This theoretically could allow a plugin to stream
-- in the FileDescriptorProtos and handle them one by one rather than read
-- the entire set into memory at once. However, as of this writing, this
-- is not similarly optimized on protoc's end -- it will store all fields in
-- memory at once before sending them to the plugin.
--
-- Type names of fields and extensions in the FileDescriptorProto are always
-- fully qualified.
, codeGeneratorRequestSourceFileDescriptors :: !(V.Vector PB_Reflection_Descriptor.FileDescriptorProto)
-- ^ File descriptors with all options, including source-retention options.
-- These descriptors are only provided for the files listed in
-- files_to_generate.
, codeGeneratorRequestCompilerVersion :: !(Maybe Version)
-- ^ The version number of protocol compiler.
, codeGeneratorRequestUnknownFields :: ![UnknownField]
}
deriving stock (Show, Eq, Generic)
deriving anyclass NFData
defaultCodeGeneratorRequest :: CodeGeneratorRequest
defaultCodeGeneratorRequest = CodeGeneratorRequest
{ codeGeneratorRequestFileToGenerate = V.empty
, codeGeneratorRequestParameter = Nothing
, codeGeneratorRequestProtoFile = V.empty
, codeGeneratorRequestSourceFileDescriptors = V.empty
, codeGeneratorRequestCompilerVersion = Nothing
, codeGeneratorRequestUnknownFields = []
}
instance MessageEncode CodeGeneratorRequest where
buildSized msg =
V.foldl' (\acc v -> acc <> archString 10 v) mempty msg.codeGeneratorRequestFileToGenerate
<> (maybe mempty (\v -> archString 18 v) msg.codeGeneratorRequestParameter)
<> V.foldl' (\acc v -> acc <> archSubmessage 122 (buildSized v)) mempty msg.codeGeneratorRequestProtoFile
<> V.foldl' (\acc v -> acc <> archSubmessage 138 (buildSized v)) mempty msg.codeGeneratorRequestSourceFileDescriptors
<> (maybe mempty (\v -> archSubmessage 26 (buildSized v)) msg.codeGeneratorRequestCompilerVersion)
<> encodeUnknownFieldsSized msg.codeGeneratorRequestUnknownFields
instance MessageDecode CodeGeneratorRequest where
{-# INLINE messageDecoder #-}
messageDecoder = stage_0 defaultCodeGeneratorRequest emptyGrowList emptyGrowList emptyGrowList
where
stage_0 msg gl_0 gl_1 gl_2 =
inOrderStage1
(0xa :: Data.Word.Word8)
decodeFieldString
(\v -> stage_0 msg (snocGrowList gl_0 v) gl_1 gl_2)
(pure (case msg.codeGeneratorRequestUnknownFields of { [] -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2 }; _ -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2, codeGeneratorRequestUnknownFields = reverse (msg.codeGeneratorRequestUnknownFields) } }))
(loop msg gl_0 gl_1 gl_2)
stage_1 msg gl_0 gl_1 gl_2 =
inOrderStage1
(0x12 :: Data.Word.Word8)
decodeFieldString
(\v -> stage_2 (msg { codeGeneratorRequestParameter = (Just v)}) gl_0 gl_1 gl_2)
(pure (case msg.codeGeneratorRequestUnknownFields of { [] -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2 }; _ -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2, codeGeneratorRequestUnknownFields = reverse (msg.codeGeneratorRequestUnknownFields) } }))
(loop msg gl_0 gl_1 gl_2)
stage_2 msg gl_0 gl_1 gl_2 =
inOrderStage1
(0x7a :: Data.Word.Word8)
decodeFieldMessage
(\v -> stage_2 msg gl_0 (snocGrowList gl_1 v) gl_2)
(pure (case msg.codeGeneratorRequestUnknownFields of { [] -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2 }; _ -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2, codeGeneratorRequestUnknownFields = reverse (msg.codeGeneratorRequestUnknownFields) } }))
(loop msg gl_0 gl_1 gl_2)
stage_3 msg gl_0 gl_1 gl_2 =
inOrderStage
0x18a
0xffff
2
decodeFieldMessage
(\v -> stage_3 msg gl_0 gl_1 (snocGrowList gl_2 v))
(pure (case msg.codeGeneratorRequestUnknownFields of { [] -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2 }; _ -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2, codeGeneratorRequestUnknownFields = reverse (msg.codeGeneratorRequestUnknownFields) } }))
(loop msg gl_0 gl_1 gl_2)
stage_4 msg gl_0 gl_1 gl_2 =
inOrderStage1
(0x1a :: Data.Word.Word8)
decodeFieldMessage
(\v -> loop (msg { codeGeneratorRequestCompilerVersion = (Just v)}) gl_0 gl_1 gl_2)
(pure (case msg.codeGeneratorRequestUnknownFields of { [] -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2 }; _ -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2, codeGeneratorRequestUnknownFields = reverse (msg.codeGeneratorRequestUnknownFields) } }))
(loop msg gl_0 gl_1 gl_2)
loop msg gl_0 gl_1 gl_2 = withTagM
(pure (case msg.codeGeneratorRequestUnknownFields of { [] -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2 }; _ -> msg { codeGeneratorRequestFileToGenerate = growListToVector gl_0, codeGeneratorRequestProtoFile = growListToVector gl_1, codeGeneratorRequestSourceFileDescriptors = growListToVector gl_2, codeGeneratorRequestUnknownFields = reverse (msg.codeGeneratorRequestUnknownFields) } }))
(\fn wt -> case fn of
1 -> do
v <- decodeFieldString
loop msg (snocGrowList gl_0 v) gl_1 gl_2
2 -> do
v <- decodeFieldString
loop (msg { codeGeneratorRequestParameter = (Just v)}) gl_0 gl_1 gl_2
15 -> do
v <- decodeFieldMessage
loop msg gl_0 (snocGrowList gl_1 v) gl_2
17 -> do
v <- decodeFieldMessage
loop msg gl_0 gl_1 (snocGrowList gl_2 v)
3 -> do
v <- decodeFieldMessage
loop (msg { codeGeneratorRequestCompilerVersion = (Just v)}) gl_0 gl_1 gl_2
_ -> do
uf <- captureUnknownField fn (Prelude.toEnum wt)
loop (msg { codeGeneratorRequestUnknownFields = (uf : msg.codeGeneratorRequestUnknownFields)}) gl_0 gl_1 gl_2)
-- | Field descriptors for 'CodeGeneratorRequest', keyed by proto field number.
--
-- Top-level CAF: allocated lazily on first force, shared on every
-- subsequent 'protoFieldDescriptors' call (no per-call rebuild).
codeGeneratorRequestFieldDescriptors :: IntMap.IntMap (SomeFieldDescriptor CodeGeneratorRequest)
codeGeneratorRequestFieldDescriptors =
IntMap.fromList
[ (1, SomeField FieldDescriptor
{ fdName = "file_to_generate"
, fdNumber = 1
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelRepeated
, fdGet = codeGeneratorRequestFileToGenerate
, fdSet = \v m -> m { codeGeneratorRequestFileToGenerate = v }
}), (2, SomeField FieldDescriptor
{ fdName = "parameter"
, fdNumber = 2
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelOptional
, fdGet = codeGeneratorRequestParameter
, fdSet = \v m -> m { codeGeneratorRequestParameter = v }
})
, (15, SomeField FieldDescriptor
{ fdName = "proto_file"
, fdNumber = 15
, fdTypeDesc = MessageType "FileDescriptorProto"
, fdLabel = LabelRepeated
, fdGet = codeGeneratorRequestProtoFile
, fdSet = \v m -> m { codeGeneratorRequestProtoFile = v }
})
, (17, SomeField FieldDescriptor
{ fdName = "source_file_descriptors"
, fdNumber = 17
, fdTypeDesc = MessageType "FileDescriptorProto"
, fdLabel = LabelRepeated
, fdGet = codeGeneratorRequestSourceFileDescriptors
, fdSet = \v m -> m { codeGeneratorRequestSourceFileDescriptors = v }
})
, (3, SomeField FieldDescriptor
{ fdName = "compiler_version"
, fdNumber = 3
, fdTypeDesc = MessageType "Version"
, fdLabel = LabelOptional
, fdGet = codeGeneratorRequestCompilerVersion
, fdSet = \v m -> m { codeGeneratorRequestCompilerVersion = v }
})
]
instance ProtoMessage CodeGeneratorRequest where
protoMessageName _ = "google.protobuf.compiler.CodeGeneratorRequest"
protoPackageName _ = "google.protobuf.compiler"
protoDefaultValue = defaultCodeGeneratorRequest
protoFileDescriptorBytes _ = fileDescriptorProtoBytes
protoFieldDescriptors _ = codeGeneratorRequestFieldDescriptors
instance IsMessage CodeGeneratorRequest
instance Aeson.ToJSON CodeGeneratorRequest where
toJSON msg = jsonObject
[ "fileToGenerate" .=: msg.codeGeneratorRequestFileToGenerate
, "parameter" .=: msg.codeGeneratorRequestParameter
, "protoFile" .=: msg.codeGeneratorRequestProtoFile
, "sourceFileDescriptors" .=: msg.codeGeneratorRequestSourceFileDescriptors
, "compilerVersion" .=: msg.codeGeneratorRequestCompilerVersion
]
instance Aeson.FromJSON CodeGeneratorRequest where
parseJSON = Aeson.withObject "CodeGeneratorRequest" $ \obj -> do
fld_codeGeneratorRequestFileToGenerate <- parseFieldMaybe obj "fileToGenerate"
fld_codeGeneratorRequestParameter <- parseFieldMaybe obj "parameter"
fld_codeGeneratorRequestProtoFile <- parseFieldMaybe obj "protoFile"
fld_codeGeneratorRequestSourceFileDescriptors <- parseFieldMaybe obj "sourceFileDescriptors"
fld_codeGeneratorRequestCompilerVersion <- parseFieldMaybe obj "compilerVersion"
pure defaultCodeGeneratorRequest
{ codeGeneratorRequestFileToGenerate = maybe (codeGeneratorRequestFileToGenerate defaultCodeGeneratorRequest) id fld_codeGeneratorRequestFileToGenerate
, codeGeneratorRequestParameter = maybe (codeGeneratorRequestParameter defaultCodeGeneratorRequest) id fld_codeGeneratorRequestParameter
, codeGeneratorRequestProtoFile = maybe (codeGeneratorRequestProtoFile defaultCodeGeneratorRequest) id fld_codeGeneratorRequestProtoFile
, codeGeneratorRequestSourceFileDescriptors = maybe (codeGeneratorRequestSourceFileDescriptors defaultCodeGeneratorRequest) id fld_codeGeneratorRequestSourceFileDescriptors
, codeGeneratorRequestCompilerVersion = maybe (codeGeneratorRequestCompilerVersion defaultCodeGeneratorRequest) id fld_codeGeneratorRequestCompilerVersion
}
instance Hashable CodeGeneratorRequest where
hashWithSalt salt msg = hashWithSalt (V.foldl' hashWithSalt (V.foldl' hashWithSalt (hashWithSalt (V.foldl' hashWithSalt (salt) msg.codeGeneratorRequestFileToGenerate) msg.codeGeneratorRequestParameter) msg.codeGeneratorRequestProtoFile) msg.codeGeneratorRequestSourceFileDescriptors) msg.codeGeneratorRequestCompilerVersion
instance Proto.Extension.HasExtensions CodeGeneratorRequest where
messageUnknownFields = codeGeneratorRequestUnknownFields
setMessageUnknownFields !ufs msg = msg { codeGeneratorRequestUnknownFields = ufs }
instance Semigroup CodeGeneratorRequest where
a <> b = CodeGeneratorRequest
{ codeGeneratorRequestFileToGenerate = a.codeGeneratorRequestFileToGenerate <> b.codeGeneratorRequestFileToGenerate
, codeGeneratorRequestParameter = case b.codeGeneratorRequestParameter of { Nothing -> a.codeGeneratorRequestParameter; x -> x }
, codeGeneratorRequestProtoFile = a.codeGeneratorRequestProtoFile <> b.codeGeneratorRequestProtoFile
, codeGeneratorRequestSourceFileDescriptors = a.codeGeneratorRequestSourceFileDescriptors <> b.codeGeneratorRequestSourceFileDescriptors
, codeGeneratorRequestCompilerVersion = case b.codeGeneratorRequestCompilerVersion of { Nothing -> a.codeGeneratorRequestCompilerVersion; x -> x }
, codeGeneratorRequestUnknownFields = a.codeGeneratorRequestUnknownFields <> b.codeGeneratorRequestUnknownFields
}
instance Monoid CodeGeneratorRequest where
mempty = defaultCodeGeneratorRequest
-- | The plugin writes an encoded CodeGeneratorResponse to stdout.
data CodeGeneratorResponse = CodeGeneratorResponse
{ codeGeneratorResponseError :: !(Maybe Text)
-- ^ Error message. If non-empty, code generation failed. The plugin process
-- should exit with status code zero even if it reports an error in this way.
--
-- This should be used to indicate errors in .proto files which prevent the
-- code generator from generating correct code. Errors which indicate a
-- problem in protoc itself -- such as the input CodeGeneratorRequest being
-- unparseable -- should be reported by writing a message to stderr and
-- exiting with a non-zero status code.
, codeGeneratorResponseSupportedFeatures :: !(Maybe Word64)
-- ^ A bitmask of supported features that the code generator supports.
-- This is a bitwise "or" of values from the Feature enum.
, codeGeneratorResponseMinimumEdition :: !(Maybe Int32)
-- ^ The minimum edition this plugin supports. This will be treated as an
-- Edition enum, but we want to allow unknown values. It should be specified
-- according the edition enum value, *not* the edition number. Only takes
-- effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.
, codeGeneratorResponseMaximumEdition :: !(Maybe Int32)
-- ^ The maximum edition this plugin supports. This will be treated as an
-- Edition enum, but we want to allow unknown values. It should be specified
-- according the edition enum value, *not* the edition number. Only takes
-- effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.
, codeGeneratorResponseFile :: !(V.Vector CodeGeneratorResponse'File)
, codeGeneratorResponseUnknownFields :: ![UnknownField]
}
deriving stock (Show, Eq, Generic)
deriving anyclass NFData
-- | Sync with code_generator.h.
data CodeGeneratorResponse'Feature
= CodeGeneratorResponse'Feature'FeatureNone
| CodeGeneratorResponse'Feature'FeatureProto3Optional
| CodeGeneratorResponse'Feature'FeatureSupportsEditions
deriving stock (Show, Eq, Ord, Prelude.Enum, Prelude.Bounded, Generic)
deriving anyclass NFData
toProtoEnumCodeGeneratorResponse'Feature :: CodeGeneratorResponse'Feature -> Int
toProtoEnumCodeGeneratorResponse'Feature CodeGeneratorResponse'Feature'FeatureNone = 0
toProtoEnumCodeGeneratorResponse'Feature CodeGeneratorResponse'Feature'FeatureProto3Optional = 1
toProtoEnumCodeGeneratorResponse'Feature CodeGeneratorResponse'Feature'FeatureSupportsEditions = 2
fromProtoEnumCodeGeneratorResponse'Feature :: Int -> Maybe CodeGeneratorResponse'Feature
fromProtoEnumCodeGeneratorResponse'Feature 0 = Just CodeGeneratorResponse'Feature'FeatureNone
fromProtoEnumCodeGeneratorResponse'Feature 1 = Just CodeGeneratorResponse'Feature'FeatureProto3Optional
fromProtoEnumCodeGeneratorResponse'Feature 2 = Just CodeGeneratorResponse'Feature'FeatureSupportsEditions
fromProtoEnumCodeGeneratorResponse'Feature _ = Nothing
instance MessageEncode CodeGeneratorResponse'Feature where
buildSized _ = mempty
instance MessageDecode CodeGeneratorResponse'Feature where
messageDecoder = pure (Prelude.toEnum 0)
instance Aeson.ToJSON CodeGeneratorResponse'Feature where
toJSON CodeGeneratorResponse'Feature'FeatureNone = Aeson.String "FEATURE_NONE"
toJSON CodeGeneratorResponse'Feature'FeatureProto3Optional = Aeson.String "FEATURE_PROTO3_OPTIONAL"
toJSON CodeGeneratorResponse'Feature'FeatureSupportsEditions = Aeson.String "FEATURE_SUPPORTS_EDITIONS"
instance Aeson.FromJSON CodeGeneratorResponse'Feature where
parseJSON = \case
Aeson.String "FEATURE_NONE" -> pure CodeGeneratorResponse'Feature'FeatureNone
Aeson.String "FEATURE_PROTO3_OPTIONAL" -> pure CodeGeneratorResponse'Feature'FeatureProto3Optional
Aeson.String "FEATURE_SUPPORTS_EDITIONS" -> pure CodeGeneratorResponse'Feature'FeatureSupportsEditions
Aeson.Number n -> pure (Prelude.toEnum (round n))
_ -> fail "Invalid enum value for CodeGeneratorResponse'Feature"
instance Hashable CodeGeneratorResponse'Feature where
hashWithSalt salt x = hashWithSalt salt (toProtoEnumCodeGeneratorResponse'Feature x)
-- | Represents a single generated file.
data CodeGeneratorResponse'File = CodeGeneratorResponse'File
{ codeGeneratorResponseFileName :: !(Maybe Text)
-- ^ The file name, relative to the output directory. The name must not
-- contain "." or ".." components and must be relative, not be absolute (so,
-- the file cannot lie outside the output directory). "/" must be used as
-- the path separator, not "\".
--
-- If the name is omitted, the content will be appended to the previous
-- file. This allows the generator to break large files into small chunks,
-- and allows the generated text to be streamed back to protoc so that large
-- files need not reside completely in memory at one time. Note that as of
-- this writing protoc does not optimize for this -- it will read the entire
-- CodeGeneratorResponse before writing files to disk.
, codeGeneratorResponseFileInsertionPoint :: !(Maybe Text)
-- ^ If non-empty, indicates that the named file should already exist, and the
-- content here is to be inserted into that file at a defined insertion
-- point. This feature allows a code generator to extend the output
-- produced by another code generator. The original generator may provide
-- insertion points by placing special annotations in the file that look
-- like:
-- @@protoc_insertion_point(NAME)
-- The annotation can have arbitrary text before and after it on the line,
-- which allows it to be placed in a comment. NAME should be replaced with
-- an identifier naming the point -- this is what other generators will use
-- as the insertion_point. Code inserted at this point will be placed
-- immediately above the line containing the insertion point (thus multiple
-- insertions to the same point will come out in the order they were added).
-- The double-@ is intended to make it unlikely that the generated code
-- could contain things that look like insertion points by accident.
--
-- For example, the C++ code generator places the following line in the
-- .pb.h files that it generates:
-- // @@protoc_insertion_point(namespace_scope)
-- This line appears within the scope of the file's package namespace, but
-- outside of any particular class. Another plugin can then specify the
-- insertion_point "namespace_scope" to generate additional classes or
-- other declarations that should be placed in this scope.
--
-- Note that if the line containing the insertion point begins with
-- whitespace, the same whitespace will be added to every line of the
-- inserted text. This is useful for languages like Python, where
-- indentation matters. In these languages, the insertion point comment
-- should be indented the same amount as any inserted code will need to be
-- in order to work correctly in that context.
--
-- The code generator that generates the initial file and the one which
-- inserts into it must both run as part of a single invocation of protoc.
-- Code generators are executed in the order in which they appear on the
-- command line.
--
-- If |insertion_point| is present, |name| must also be present.
, codeGeneratorResponseFileContent :: !(Maybe Text)
-- ^ The file contents.
, codeGeneratorResponseFileGeneratedCodeInfo :: !(Maybe PB_Reflection_Descriptor.GeneratedCodeInfo)
-- ^ Information describing the file content being inserted. If an insertion
-- point is used, this information will be appropriately offset and inserted
-- into the code generation metadata for the generated files.
, codeGeneratorResponseFileUnknownFields :: ![UnknownField]
}
deriving stock (Show, Eq, Generic)
deriving anyclass NFData
defaultCodeGeneratorResponse'File :: CodeGeneratorResponse'File
defaultCodeGeneratorResponse'File = CodeGeneratorResponse'File
{ codeGeneratorResponseFileName = Nothing
, codeGeneratorResponseFileInsertionPoint = Nothing
, codeGeneratorResponseFileContent = Nothing
, codeGeneratorResponseFileGeneratedCodeInfo = Nothing
, codeGeneratorResponseFileUnknownFields = []
}
instance MessageEncode CodeGeneratorResponse'File where
buildSized msg =
(maybe mempty (\v -> archString 10 v) msg.codeGeneratorResponseFileName)
<> (maybe mempty (\v -> archString 18 v) msg.codeGeneratorResponseFileInsertionPoint)
<> (maybe mempty (\v -> archString 122 v) msg.codeGeneratorResponseFileContent)
<> (maybe mempty (\v -> archSubmessage 130 (buildSized v)) msg.codeGeneratorResponseFileGeneratedCodeInfo)
<> encodeUnknownFieldsSized msg.codeGeneratorResponseFileUnknownFields
instance MessageDecode CodeGeneratorResponse'File where
{-# INLINE messageDecoder #-}
messageDecoder = stage_0 defaultCodeGeneratorResponse'File
where
stage_0 msg =
inOrderStage1
(0xa :: Data.Word.Word8)
decodeFieldString
(\v -> stage_1 (msg { codeGeneratorResponseFileName = (Just v)}))
(pure (case msg.codeGeneratorResponseFileUnknownFields of { [] -> msg; _ -> msg { codeGeneratorResponseFileUnknownFields = reverse (msg.codeGeneratorResponseFileUnknownFields) } }))
(loop msg)
stage_1 msg =
inOrderStage1
(0x12 :: Data.Word.Word8)
decodeFieldString
(\v -> stage_2 (msg { codeGeneratorResponseFileInsertionPoint = (Just v)}))
(pure (case msg.codeGeneratorResponseFileUnknownFields of { [] -> msg; _ -> msg { codeGeneratorResponseFileUnknownFields = reverse (msg.codeGeneratorResponseFileUnknownFields) } }))
(loop msg)
stage_2 msg =
inOrderStage1
(0x7a :: Data.Word.Word8)
decodeFieldString
(\v -> stage_3 (msg { codeGeneratorResponseFileContent = (Just v)}))
(pure (case msg.codeGeneratorResponseFileUnknownFields of { [] -> msg; _ -> msg { codeGeneratorResponseFileUnknownFields = reverse (msg.codeGeneratorResponseFileUnknownFields) } }))
(loop msg)
stage_3 msg =
inOrderStage
0x182
0xffff
2
decodeFieldMessage
(\v -> loop (msg { codeGeneratorResponseFileGeneratedCodeInfo = (Just v)}))
(pure (case msg.codeGeneratorResponseFileUnknownFields of { [] -> msg; _ -> msg { codeGeneratorResponseFileUnknownFields = reverse (msg.codeGeneratorResponseFileUnknownFields) } }))
(loop msg)
loop msg = withTagM
(pure (case msg.codeGeneratorResponseFileUnknownFields of { [] -> msg; _ -> msg { codeGeneratorResponseFileUnknownFields = reverse (msg.codeGeneratorResponseFileUnknownFields) } }))
(\fn wt -> case fn of
1 -> do
v <- decodeFieldString
loop (msg { codeGeneratorResponseFileName = (Just v)})
2 -> do
v <- decodeFieldString
loop (msg { codeGeneratorResponseFileInsertionPoint = (Just v)})
15 -> do
v <- decodeFieldString
loop (msg { codeGeneratorResponseFileContent = (Just v)})
16 -> do
v <- decodeFieldMessage
loop (msg { codeGeneratorResponseFileGeneratedCodeInfo = (Just v)})
_ -> do
uf <- captureUnknownField fn (Prelude.toEnum wt)
loop (msg { codeGeneratorResponseFileUnknownFields = (uf : msg.codeGeneratorResponseFileUnknownFields)}))
-- | Field descriptors for 'CodeGeneratorResponse'File', keyed by proto field number.
--
-- Top-level CAF: allocated lazily on first force, shared on every
-- subsequent 'protoFieldDescriptors' call (no per-call rebuild).
codeGeneratorResponse'FileFieldDescriptors :: IntMap.IntMap (SomeFieldDescriptor CodeGeneratorResponse'File)
codeGeneratorResponse'FileFieldDescriptors =
IntMap.fromList
[ (1, SomeField FieldDescriptor
{ fdName = "name"
, fdNumber = 1
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseFileName
, fdSet = \v m -> m { codeGeneratorResponseFileName = v }
}), (2, SomeField FieldDescriptor
{ fdName = "insertion_point"
, fdNumber = 2
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseFileInsertionPoint
, fdSet = \v m -> m { codeGeneratorResponseFileInsertionPoint = v }
})
, (15, SomeField FieldDescriptor
{ fdName = "content"
, fdNumber = 15
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseFileContent
, fdSet = \v m -> m { codeGeneratorResponseFileContent = v }
})
, (16, SomeField FieldDescriptor
{ fdName = "generated_code_info"
, fdNumber = 16
, fdTypeDesc = MessageType "GeneratedCodeInfo"
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseFileGeneratedCodeInfo
, fdSet = \v m -> m { codeGeneratorResponseFileGeneratedCodeInfo = v }
})
]
instance ProtoMessage CodeGeneratorResponse'File where
protoMessageName _ = "google.protobuf.compiler.CodeGeneratorResponse.File"
protoPackageName _ = "google.protobuf.compiler"
protoDefaultValue = defaultCodeGeneratorResponse'File
protoFileDescriptorBytes _ = fileDescriptorProtoBytes
protoFieldDescriptors _ = codeGeneratorResponse'FileFieldDescriptors
instance IsMessage CodeGeneratorResponse'File
instance Aeson.ToJSON CodeGeneratorResponse'File where
toJSON msg = jsonObject
[ "name" .=: msg.codeGeneratorResponseFileName
, "insertionPoint" .=: msg.codeGeneratorResponseFileInsertionPoint
, "content" .=: msg.codeGeneratorResponseFileContent
, "generatedCodeInfo" .=: msg.codeGeneratorResponseFileGeneratedCodeInfo
]
instance Aeson.FromJSON CodeGeneratorResponse'File where
parseJSON = Aeson.withObject "CodeGeneratorResponse'File" $ \obj -> do
fld_codeGeneratorResponseFileName <- parseFieldMaybe obj "name"
fld_codeGeneratorResponseFileInsertionPoint <- parseFieldMaybe obj "insertionPoint"
fld_codeGeneratorResponseFileContent <- parseFieldMaybe obj "content"
fld_codeGeneratorResponseFileGeneratedCodeInfo <- parseFieldMaybe obj "generatedCodeInfo"
pure defaultCodeGeneratorResponse'File
{ codeGeneratorResponseFileName = maybe (codeGeneratorResponseFileName defaultCodeGeneratorResponse'File) id fld_codeGeneratorResponseFileName
, codeGeneratorResponseFileInsertionPoint = maybe (codeGeneratorResponseFileInsertionPoint defaultCodeGeneratorResponse'File) id fld_codeGeneratorResponseFileInsertionPoint
, codeGeneratorResponseFileContent = maybe (codeGeneratorResponseFileContent defaultCodeGeneratorResponse'File) id fld_codeGeneratorResponseFileContent
, codeGeneratorResponseFileGeneratedCodeInfo = maybe (codeGeneratorResponseFileGeneratedCodeInfo defaultCodeGeneratorResponse'File) id fld_codeGeneratorResponseFileGeneratedCodeInfo
}
instance Hashable CodeGeneratorResponse'File where
hashWithSalt salt msg = hashWithSalt (hashWithSalt (hashWithSalt (hashWithSalt (salt) msg.codeGeneratorResponseFileName) msg.codeGeneratorResponseFileInsertionPoint) msg.codeGeneratorResponseFileContent) msg.codeGeneratorResponseFileGeneratedCodeInfo
instance Proto.Extension.HasExtensions CodeGeneratorResponse'File where
messageUnknownFields = codeGeneratorResponseFileUnknownFields
setMessageUnknownFields !ufs msg = msg { codeGeneratorResponseFileUnknownFields = ufs }
instance Semigroup CodeGeneratorResponse'File where
a <> b = CodeGeneratorResponse'File
{ codeGeneratorResponseFileName = case b.codeGeneratorResponseFileName of { Nothing -> a.codeGeneratorResponseFileName; x -> x }
, codeGeneratorResponseFileInsertionPoint = case b.codeGeneratorResponseFileInsertionPoint of { Nothing -> a.codeGeneratorResponseFileInsertionPoint; x -> x }
, codeGeneratorResponseFileContent = case b.codeGeneratorResponseFileContent of { Nothing -> a.codeGeneratorResponseFileContent; x -> x }
, codeGeneratorResponseFileGeneratedCodeInfo = case b.codeGeneratorResponseFileGeneratedCodeInfo of { Nothing -> a.codeGeneratorResponseFileGeneratedCodeInfo; x -> x }
, codeGeneratorResponseFileUnknownFields = a.codeGeneratorResponseFileUnknownFields <> b.codeGeneratorResponseFileUnknownFields
}
instance Monoid CodeGeneratorResponse'File where
mempty = defaultCodeGeneratorResponse'File
defaultCodeGeneratorResponse :: CodeGeneratorResponse
defaultCodeGeneratorResponse = CodeGeneratorResponse
{ codeGeneratorResponseError = Nothing
, codeGeneratorResponseSupportedFeatures = Nothing
, codeGeneratorResponseMinimumEdition = Nothing
, codeGeneratorResponseMaximumEdition = Nothing
, codeGeneratorResponseFile = V.empty
, codeGeneratorResponseUnknownFields = []
}
instance MessageEncode CodeGeneratorResponse where
buildSized msg =
(maybe mempty (\v -> archString 10 v) msg.codeGeneratorResponseError)
<> (maybe mempty (\v -> archVarint 16 v) msg.codeGeneratorResponseSupportedFeatures)
<> (maybe mempty (\v -> archVarint 24 (fromIntegral v)) msg.codeGeneratorResponseMinimumEdition)
<> (maybe mempty (\v -> archVarint 32 (fromIntegral v)) msg.codeGeneratorResponseMaximumEdition)
<> V.foldl' (\acc v -> acc <> archSubmessage 122 (buildSized v)) mempty msg.codeGeneratorResponseFile
<> encodeUnknownFieldsSized msg.codeGeneratorResponseUnknownFields
instance MessageDecode CodeGeneratorResponse where
{-# INLINE messageDecoder #-}
messageDecoder = stage_0 defaultCodeGeneratorResponse emptyGrowList
where
stage_0 msg gl_0 =
inOrderStage1
(0xa :: Data.Word.Word8)
decodeFieldString
(\v -> stage_1 (msg { codeGeneratorResponseError = (Just v)}) gl_0)
(pure (case msg.codeGeneratorResponseUnknownFields of { [] -> msg { codeGeneratorResponseFile = growListToVector gl_0 }; _ -> msg { codeGeneratorResponseFile = growListToVector gl_0, codeGeneratorResponseUnknownFields = reverse (msg.codeGeneratorResponseUnknownFields) } }))
(loop msg gl_0)
stage_1 msg gl_0 =
inOrderStage1
(0x10 :: Data.Word.Word8)
decodeFieldVarint
(\v -> stage_2 (msg { codeGeneratorResponseSupportedFeatures = (Just v)}) gl_0)
(pure (case msg.codeGeneratorResponseUnknownFields of { [] -> msg { codeGeneratorResponseFile = growListToVector gl_0 }; _ -> msg { codeGeneratorResponseFile = growListToVector gl_0, codeGeneratorResponseUnknownFields = reverse (msg.codeGeneratorResponseUnknownFields) } }))
(loop msg gl_0)
stage_2 msg gl_0 =
inOrderStage1
(0x18 :: Data.Word.Word8)
(fromIntegral <$> decodeFieldVarint)
(\v -> stage_3 (msg { codeGeneratorResponseMinimumEdition = (Just v)}) gl_0)
(pure (case msg.codeGeneratorResponseUnknownFields of { [] -> msg { codeGeneratorResponseFile = growListToVector gl_0 }; _ -> msg { codeGeneratorResponseFile = growListToVector gl_0, codeGeneratorResponseUnknownFields = reverse (msg.codeGeneratorResponseUnknownFields) } }))
(loop msg gl_0)
stage_3 msg gl_0 =
inOrderStage1
(0x20 :: Data.Word.Word8)
(fromIntegral <$> decodeFieldVarint)
(\v -> stage_4 (msg { codeGeneratorResponseMaximumEdition = (Just v)}) gl_0)
(pure (case msg.codeGeneratorResponseUnknownFields of { [] -> msg { codeGeneratorResponseFile = growListToVector gl_0 }; _ -> msg { codeGeneratorResponseFile = growListToVector gl_0, codeGeneratorResponseUnknownFields = reverse (msg.codeGeneratorResponseUnknownFields) } }))
(loop msg gl_0)
stage_4 msg gl_0 =
inOrderStage1
(0x7a :: Data.Word.Word8)
decodeFieldMessage
(\v -> stage_4 msg (snocGrowList gl_0 v))
(pure (case msg.codeGeneratorResponseUnknownFields of { [] -> msg { codeGeneratorResponseFile = growListToVector gl_0 }; _ -> msg { codeGeneratorResponseFile = growListToVector gl_0, codeGeneratorResponseUnknownFields = reverse (msg.codeGeneratorResponseUnknownFields) } }))
(loop msg gl_0)
loop msg gl_0 = withTagM
(pure (case msg.codeGeneratorResponseUnknownFields of { [] -> msg { codeGeneratorResponseFile = growListToVector gl_0 }; _ -> msg { codeGeneratorResponseFile = growListToVector gl_0, codeGeneratorResponseUnknownFields = reverse (msg.codeGeneratorResponseUnknownFields) } }))
(\fn wt -> case fn of
1 -> do
v <- decodeFieldString
loop (msg { codeGeneratorResponseError = (Just v)}) gl_0
2 -> do
v <- decodeFieldVarint
loop (msg { codeGeneratorResponseSupportedFeatures = (Just v)}) gl_0
3 -> do
v <- (fromIntegral <$> decodeFieldVarint)
loop (msg { codeGeneratorResponseMinimumEdition = (Just v)}) gl_0
4 -> do
v <- (fromIntegral <$> decodeFieldVarint)
loop (msg { codeGeneratorResponseMaximumEdition = (Just v)}) gl_0
15 -> do
v <- decodeFieldMessage
loop msg (snocGrowList gl_0 v)
_ -> do
uf <- captureUnknownField fn (Prelude.toEnum wt)
loop (msg { codeGeneratorResponseUnknownFields = (uf : msg.codeGeneratorResponseUnknownFields)}) gl_0)
-- | Field descriptors for 'CodeGeneratorResponse', keyed by proto field number.
--
-- Top-level CAF: allocated lazily on first force, shared on every
-- subsequent 'protoFieldDescriptors' call (no per-call rebuild).
codeGeneratorResponseFieldDescriptors :: IntMap.IntMap (SomeFieldDescriptor CodeGeneratorResponse)
codeGeneratorResponseFieldDescriptors =
IntMap.fromList
[ (1, SomeField FieldDescriptor
{ fdName = "error"
, fdNumber = 1
, fdTypeDesc = ScalarType StringField
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseError
, fdSet = \v m -> m { codeGeneratorResponseError = v }
}), (2, SomeField FieldDescriptor
{ fdName = "supported_features"
, fdNumber = 2
, fdTypeDesc = ScalarType UInt64Field
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseSupportedFeatures
, fdSet = \v m -> m { codeGeneratorResponseSupportedFeatures = v }
})
, (3, SomeField FieldDescriptor
{ fdName = "minimum_edition"
, fdNumber = 3
, fdTypeDesc = ScalarType Int32Field
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseMinimumEdition
, fdSet = \v m -> m { codeGeneratorResponseMinimumEdition = v }
})
, (4, SomeField FieldDescriptor
{ fdName = "maximum_edition"
, fdNumber = 4
, fdTypeDesc = ScalarType Int32Field
, fdLabel = LabelOptional
, fdGet = codeGeneratorResponseMaximumEdition
, fdSet = \v m -> m { codeGeneratorResponseMaximumEdition = v }
})
, (15, SomeField FieldDescriptor
{ fdName = "file"
, fdNumber = 15
, fdTypeDesc = MessageType "File"
, fdLabel = LabelRepeated
, fdGet = codeGeneratorResponseFile
, fdSet = \v m -> m { codeGeneratorResponseFile = v }
})
]
instance ProtoMessage CodeGeneratorResponse where
protoMessageName _ = "google.protobuf.compiler.CodeGeneratorResponse"
protoPackageName _ = "google.protobuf.compiler"
protoDefaultValue = defaultCodeGeneratorResponse
protoFileDescriptorBytes _ = fileDescriptorProtoBytes
protoFieldDescriptors _ = codeGeneratorResponseFieldDescriptors
instance IsMessage CodeGeneratorResponse
instance Aeson.ToJSON CodeGeneratorResponse where
toJSON msg = jsonObject
[ "error" .=: msg.codeGeneratorResponseError
, "supportedFeatures" .=: msg.codeGeneratorResponseSupportedFeatures
, "minimumEdition" .=: msg.codeGeneratorResponseMinimumEdition
, "maximumEdition" .=: msg.codeGeneratorResponseMaximumEdition
, "file" .=: msg.codeGeneratorResponseFile
]
instance Aeson.FromJSON CodeGeneratorResponse where
parseJSON = Aeson.withObject "CodeGeneratorResponse" $ \obj -> do
fld_codeGeneratorResponseError <- parseFieldMaybe obj "error"
fld_codeGeneratorResponseSupportedFeatures <- parseFieldMaybe obj "supportedFeatures"
fld_codeGeneratorResponseMinimumEdition <- parseFieldMaybe obj "minimumEdition"
fld_codeGeneratorResponseMaximumEdition <- parseFieldMaybe obj "maximumEdition"
fld_codeGeneratorResponseFile <- parseFieldMaybe obj "file"
pure defaultCodeGeneratorResponse
{ codeGeneratorResponseError = maybe (codeGeneratorResponseError defaultCodeGeneratorResponse) id fld_codeGeneratorResponseError
, codeGeneratorResponseSupportedFeatures = maybe (codeGeneratorResponseSupportedFeatures defaultCodeGeneratorResponse) id fld_codeGeneratorResponseSupportedFeatures
, codeGeneratorResponseMinimumEdition = maybe (codeGeneratorResponseMinimumEdition defaultCodeGeneratorResponse) id fld_codeGeneratorResponseMinimumEdition
, codeGeneratorResponseMaximumEdition = maybe (codeGeneratorResponseMaximumEdition defaultCodeGeneratorResponse) id fld_codeGeneratorResponseMaximumEdition
, codeGeneratorResponseFile = maybe (codeGeneratorResponseFile defaultCodeGeneratorResponse) id fld_codeGeneratorResponseFile
}
instance Hashable CodeGeneratorResponse where
hashWithSalt salt msg = V.foldl' hashWithSalt (hashWithSalt (hashWithSalt (hashWithSalt (hashWithSalt (salt) msg.codeGeneratorResponseError) msg.codeGeneratorResponseSupportedFeatures) msg.codeGeneratorResponseMinimumEdition) msg.codeGeneratorResponseMaximumEdition) msg.codeGeneratorResponseFile
instance Proto.Extension.HasExtensions CodeGeneratorResponse where
messageUnknownFields = codeGeneratorResponseUnknownFields
setMessageUnknownFields !ufs msg = msg { codeGeneratorResponseUnknownFields = ufs }
instance Semigroup CodeGeneratorResponse where
a <> b = CodeGeneratorResponse
{ codeGeneratorResponseError = case b.codeGeneratorResponseError of { Nothing -> a.codeGeneratorResponseError; x -> x }
, codeGeneratorResponseSupportedFeatures = case b.codeGeneratorResponseSupportedFeatures of { Nothing -> a.codeGeneratorResponseSupportedFeatures; x -> x }
, codeGeneratorResponseMinimumEdition = case b.codeGeneratorResponseMinimumEdition of { Nothing -> a.codeGeneratorResponseMinimumEdition; x -> x }
, codeGeneratorResponseMaximumEdition = case b.codeGeneratorResponseMaximumEdition of { Nothing -> a.codeGeneratorResponseMaximumEdition; x -> x }
, codeGeneratorResponseFile = a.codeGeneratorResponseFile <> b.codeGeneratorResponseFile
, codeGeneratorResponseUnknownFields = a.codeGeneratorResponseUnknownFields <> b.codeGeneratorResponseUnknownFields
}
instance Monoid CodeGeneratorResponse where
mempty = defaultCodeGeneratorResponse