packages feed

hydra-0.15.0: 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

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"

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"

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"

newtype FileReference =
  FileReference {
    unFileReference :: String}
  deriving (Eq, Ord, Read, Show)

_FileReference = Core.Name "hydra.protobuf.proto3.FileReference"

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"

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"