hydra-ext-0.17.4: 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, map, pure, sum)
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"