packages feed

hydra-kernel-0.18.0: src/main/haskell/Hydra/Core/Encode/Variants.hs

-- Note: this is an automatically generated file. Do not edit.

-- | Term encoders for hydra.core.variants

module Hydra.Core.Encode.Variants where

import qualified Hydra.Core.Encode.Model as EncodeModel
import qualified Hydra.Core.Model as Model
import qualified Hydra.Core.Variants as Variants
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
import qualified Data.Scientific as Sci
import Data.Void

-- | Encoder for hydra.core.variants.LiteralVariant
literalVariant :: Variants.LiteralVariant -> Model.Term
literalVariant x =
    case x of
      Variants.LiteralVariantBinary -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.LiteralVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "binary"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.LiteralVariantBoolean -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.LiteralVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "boolean"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.LiteralVariantDecimal -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.LiteralVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "decimal"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.LiteralVariantFloat -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.LiteralVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "float"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.LiteralVariantInteger -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.LiteralVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "integer"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.LiteralVariantString -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.LiteralVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "string"),
          Model.fieldTerm = Model.TermUnit}})

-- | Encoder for hydra.core.variants.TermVariant
termVariant :: Variants.TermVariant -> Model.Term
termVariant x =
    case x of
      Variants.TermVariantAnnotated -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "annotated"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantApplication -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "application"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantCases -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "cases"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantEither -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "either"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantInject -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "inject"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantLambda -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "lambda"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantLet -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "let"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantList -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "list"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantLiteral -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "literal"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantMap -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "map"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantOptional -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "optional"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantPair -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "pair"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantProject -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "project"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantRecord -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "record"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantSet -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "set"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantTypeApplication -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "typeApplication"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantTypeLambda -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "typeLambda"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantUnit -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "unit"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantUnwrap -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "unwrap"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantVariable -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "variable"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TermVariantWrap -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TermVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "wrap"),
          Model.fieldTerm = Model.TermUnit}})

-- | Encoder for hydra.core.variants.TypeVariant
typeVariant :: Variants.TypeVariant -> Model.Term
typeVariant x =
    case x of
      Variants.TypeVariantAnnotated -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "annotated"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantApplication -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "application"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantEffect -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "effect"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantEither -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "either"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantForall -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "forall"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantFunction -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "function"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantList -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "list"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantLiteral -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "literal"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantMap -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "map"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantOptional -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "optional"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantPair -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "pair"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantRecord -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "record"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantSet -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "set"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantUnion -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "union"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantUnit -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "unit"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantVariable -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "variable"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantVoid -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "void"),
          Model.fieldTerm = Model.TermUnit}})
      Variants.TypeVariantWrap -> Model.TermInject (Model.Injection {
        Model.injectionTypeName = (Model.Name "hydra.core.variants.TypeVariant"),
        Model.injectionField = Model.Field {
          Model.fieldName = (Model.Name "wrap"),
          Model.fieldTerm = Model.TermUnit}})