hydra-ext-0.17.6: src/main/haskell/Hydra/Protobuf/Proto3.hs
-- Note: this is an automatically generated file. Do not edit.
-- | A model for Protocol Buffers v3 enum and message types, designed as a target for transformations.This model is loosely based on https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/type.proto, as well as the proto3 reference documentation
module Hydra.Protobuf.Proto3 where
import qualified Hydra.Core as Core
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
import qualified Data.Scientific as Sci
-- | A top-level Protobuf definition, either an enum or a message type
data Definition =
DefinitionEnum EnumDefinition |
DefinitionMessage MessageDefinition
deriving (Eq, Ord, Read, Show)
_Definition = Core.Name "hydra.protobuf.proto3.Definition"
_Definition_enum = Core.Name "enum"
_Definition_message = Core.Name "message"
-- | Enum type definition
data EnumDefinition =
EnumDefinition {
-- | Enum type name
enumDefinitionName :: TypeName,
-- | Enum value definitions
enumDefinitionValues :: [EnumValue],
-- | Protocol buffer options
enumDefinitionOptions :: [Option]}
deriving (Eq, Ord, Read, Show)
_EnumDefinition = Core.Name "hydra.protobuf.proto3.EnumDefinition"
_EnumDefinition_name = Core.Name "name"
_EnumDefinition_values = Core.Name "values"
_EnumDefinition_options = Core.Name "options"
-- | Enum value definition
data EnumValue =
EnumValue {
-- | Enum value name
enumValueName :: EnumValueName,
-- | Enum value number
enumValueNumber :: Int,
-- | Protocol buffer options
enumValueOptions :: [Option]}
deriving (Eq, Ord, Read, Show)
_EnumValue = Core.Name "hydra.protobuf.proto3.EnumValue"
_EnumValue_name = Core.Name "name"
_EnumValue_number = Core.Name "number"
_EnumValue_options = Core.Name "options"
-- | The name of an enum value, conventionally an upper-snake-case identifier
newtype EnumValueName =
EnumValueName {
unEnumValueName :: String}
deriving (Eq, Ord, Read, Show)
_EnumValueName = Core.Name "hydra.protobuf.proto3.EnumValueName"
-- | A single field of a message type
data Field =
Field {
-- | The field name
fieldName :: FieldName,
-- | The field JSON name
fieldJsonName :: (Maybe String),
-- | The datatype of the field
fieldType :: FieldType,
-- | The field number
fieldNumber :: Int,
-- | The protocol buffer options
fieldOptions :: [Option]}
deriving (Eq, Ord, Read, Show)
_Field = Core.Name "hydra.protobuf.proto3.Field"
_Field_name = Core.Name "name"
_Field_jsonName = Core.Name "jsonName"
_Field_type = Core.Name "type"
_Field_number = Core.Name "number"
_Field_options = Core.Name "options"
-- | The name of a field
newtype FieldName =
FieldName {
unFieldName :: String}
deriving (Eq, Ord, Read, Show)
_FieldName = Core.Name "hydra.protobuf.proto3.FieldName"
-- | The type of a message field: a map, a oneof group, a repeated field, or a simple field
data FieldType =
FieldTypeMap MapType |
FieldTypeOneof [Field] |
FieldTypeRepeated SimpleType |
FieldTypeSimple SimpleType
deriving (Eq, Ord, Read, Show)
_FieldType = Core.Name "hydra.protobuf.proto3.FieldType"
_FieldType_map = Core.Name "map"
_FieldType_oneof = Core.Name "oneof"
_FieldType_repeated = Core.Name "repeated"
_FieldType_simple = Core.Name "simple"
-- | A path to a .proto file, as used in import statements
newtype FileReference =
FileReference {
unFileReference :: String}
deriving (Eq, Ord, Read, Show)
_FileReference = Core.Name "hydra.protobuf.proto3.FileReference"
-- | The key and value types of a proto3 map field
data MapType =
MapType {
mapTypeKeys :: SimpleType,
mapTypeValues :: SimpleType}
deriving (Eq, Ord, Read, Show)
_MapType = Core.Name "hydra.protobuf.proto3.MapType"
_MapType_keys = Core.Name "keys"
_MapType_values = Core.Name "values"
-- | A protocol buffer message type
data MessageDefinition =
MessageDefinition {
-- | The fully qualified message name
messageDefinitionName :: TypeName,
-- | The list of fields
messageDefinitionFields :: [Field],
-- | The protocol buffer options
messageDefinitionOptions :: [Option]}
deriving (Eq, Ord, Read, Show)
_MessageDefinition = Core.Name "hydra.protobuf.proto3.MessageDefinition"
_MessageDefinition_name = Core.Name "name"
_MessageDefinition_fields = Core.Name "fields"
_MessageDefinition_options = Core.Name "options"
-- | A protocol buffer option, which can be attached to a message, field, enumeration, etc
data Option =
Option {
-- | The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, `"map_entry"`. For custom options, it should be the fully-qualified name. For example, `"google.api.http"`.
optionName :: String,
-- | The option's value
optionValue :: Value}
deriving (Eq, Ord, Read, Show)
_Option = Core.Name "hydra.protobuf.proto3.Option"
_Option_name = Core.Name "name"
_Option_value = Core.Name "value"
-- | A Protobuf package name, i.e. the value of a package declaration
newtype PackageName =
PackageName {
unPackageName :: String}
deriving (Eq, Ord, Read, Show)
_PackageName = Core.Name "hydra.protobuf.proto3.PackageName"
-- | A .proto file, usually containing one or more enum or message type definitions
data ProtoFile =
ProtoFile {
protoFilePackage :: PackageName,
protoFileImports :: [FileReference],
protoFileTypes :: [Definition],
protoFileOptions :: [Option]}
deriving (Eq, Ord, Read, Show)
_ProtoFile = Core.Name "hydra.protobuf.proto3.ProtoFile"
_ProtoFile_package = Core.Name "package"
_ProtoFile_imports = Core.Name "imports"
_ProtoFile_types = Core.Name "types"
_ProtoFile_options = Core.Name "options"
-- | One of several Proto3 scalar types
data ScalarType =
ScalarTypeBool |
ScalarTypeBytes |
ScalarTypeDouble |
ScalarTypeFixed32 |
ScalarTypeFixed64 |
ScalarTypeFloat |
ScalarTypeInt32 |
ScalarTypeInt64 |
ScalarTypeSfixed32 |
ScalarTypeSfixed64 |
ScalarTypeSint32 |
ScalarTypeSint64 |
ScalarTypeString |
ScalarTypeUint32 |
ScalarTypeUint64
deriving (Eq, Ord, Read, Show)
_ScalarType = Core.Name "hydra.protobuf.proto3.ScalarType"
_ScalarType_bool = Core.Name "bool"
_ScalarType_bytes = Core.Name "bytes"
_ScalarType_double = Core.Name "double"
_ScalarType_fixed32 = Core.Name "fixed32"
_ScalarType_fixed64 = Core.Name "fixed64"
_ScalarType_float = Core.Name "float"
_ScalarType_int32 = Core.Name "int32"
_ScalarType_int64 = Core.Name "int64"
_ScalarType_sfixed32 = Core.Name "sfixed32"
_ScalarType_sfixed64 = Core.Name "sfixed64"
_ScalarType_sint32 = Core.Name "sint32"
_ScalarType_sint64 = Core.Name "sint64"
_ScalarType_string = Core.Name "string"
_ScalarType_uint32 = Core.Name "uint32"
_ScalarType_uint64 = Core.Name "uint64"
-- | A scalar type or a reference to an enum type or message type
data SimpleType =
SimpleTypeReference TypeName |
SimpleTypeScalar ScalarType
deriving (Eq, Ord, Read, Show)
_SimpleType = Core.Name "hydra.protobuf.proto3.SimpleType"
_SimpleType_reference = Core.Name "reference"
_SimpleType_scalar = Core.Name "scalar"
-- | The local name of an enum type or message type
newtype TypeName =
TypeName {
unTypeName :: String}
deriving (Eq, Ord, Read, Show)
_TypeName = Core.Name "hydra.protobuf.proto3.TypeName"
-- | A reference to an enum type or message type
newtype TypeReference =
TypeReference {
unTypeReference :: String}
deriving (Eq, Ord, Read, Show)
_TypeReference = Core.Name "hydra.protobuf.proto3.TypeReference"
-- | A scalar value
data Value =
ValueBoolean Bool |
ValueString String
deriving (Eq, Ord, Read, Show)
_Value = Core.Name "hydra.protobuf.proto3.Value"
_Value_boolean = Core.Name "boolean"
_Value_string = Core.Name "string"