{- This file was auto-generated from tensorflow/core/framework/kernel_def.proto by the proto-lens-protoc program. -}
{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
  #-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
module Proto.Tensorflow.Core.Framework.KernelDef where
import qualified Data.ProtoLens.Reexport.Prelude as Prelude
import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
import qualified Data.ProtoLens.Reexport.Data.ProtoLens
       as Data.ProtoLens
import qualified
       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
       as Data.ProtoLens.Message.Enum
import qualified Data.ProtoLens.Reexport.Lens.Family2
       as Lens.Family2
import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
       as Lens.Family2.Unchecked
import qualified Data.ProtoLens.Reexport.Data.Default.Class
       as Data.Default.Class
import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
import qualified Data.ProtoLens.Reexport.Data.ByteString
       as Data.ByteString
import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
import qualified Proto.Tensorflow.Core.Framework.AttrValue

data KernelDef = KernelDef{_KernelDef'op :: !Data.Text.Text,
                           _KernelDef'deviceType :: !Data.Text.Text,
                           _KernelDef'constraint :: ![KernelDef'AttrConstraint],
                           _KernelDef'hostMemoryArg :: ![Data.Text.Text],
                           _KernelDef'label :: !Data.Text.Text}
               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "op" f KernelDef KernelDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _KernelDef'op
                 (\ x__ y__ -> x__{_KernelDef'op = y__}))
              Prelude.id

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "deviceType" f KernelDef KernelDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _KernelDef'deviceType
                 (\ x__ y__ -> x__{_KernelDef'deviceType = y__}))
              Prelude.id

instance (a ~ [KernelDef'AttrConstraint],
          b ~ [KernelDef'AttrConstraint], Prelude.Functor f) =>
         Lens.Labels.HasLens "constraint" f KernelDef KernelDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _KernelDef'constraint
                 (\ x__ y__ -> x__{_KernelDef'constraint = y__}))
              Prelude.id

instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "hostMemoryArg" f KernelDef KernelDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _KernelDef'hostMemoryArg
                 (\ x__ y__ -> x__{_KernelDef'hostMemoryArg = y__}))
              Prelude.id

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "label" f KernelDef KernelDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _KernelDef'label
                 (\ x__ y__ -> x__{_KernelDef'label = y__}))
              Prelude.id

instance Data.Default.Class.Default KernelDef where
        def
          = KernelDef{_KernelDef'op = Data.ProtoLens.fieldDefault,
                      _KernelDef'deviceType = Data.ProtoLens.fieldDefault,
                      _KernelDef'constraint = [], _KernelDef'hostMemoryArg = [],
                      _KernelDef'label = Data.ProtoLens.fieldDefault}

instance Data.ProtoLens.Message KernelDef where
        descriptor
          = let op__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "op"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional op)
                      :: Data.ProtoLens.FieldDescriptor KernelDef
                deviceType__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "device_type"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional deviceType)
                      :: Data.ProtoLens.FieldDescriptor KernelDef
                constraint__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "constraint"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor KernelDef'AttrConstraint)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked constraint)
                      :: Data.ProtoLens.FieldDescriptor KernelDef
                hostMemoryArg__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "host_memory_arg"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
                         hostMemoryArg)
                      :: Data.ProtoLens.FieldDescriptor KernelDef
                label__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "label"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional label)
                      :: Data.ProtoLens.FieldDescriptor KernelDef
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.KernelDef")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, op__field_descriptor),
                    (Data.ProtoLens.Tag 2, deviceType__field_descriptor),
                    (Data.ProtoLens.Tag 3, constraint__field_descriptor),
                    (Data.ProtoLens.Tag 4, hostMemoryArg__field_descriptor),
                    (Data.ProtoLens.Tag 5, label__field_descriptor)])
                (Data.Map.fromList
                   [("op", op__field_descriptor),
                    ("device_type", deviceType__field_descriptor),
                    ("constraint", constraint__field_descriptor),
                    ("host_memory_arg", hostMemoryArg__field_descriptor),
                    ("label", label__field_descriptor)])

data KernelDef'AttrConstraint = KernelDef'AttrConstraint{_KernelDef'AttrConstraint'name
                                                         :: !Data.Text.Text,
                                                         _KernelDef'AttrConstraint'allowedValues ::
                                                         !(Prelude.Maybe
                                                             Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "name" f KernelDef'AttrConstraint
           KernelDef'AttrConstraint
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _KernelDef'AttrConstraint'name
                 (\ x__ y__ -> x__{_KernelDef'AttrConstraint'name = y__}))
              Prelude.id

instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "allowedValues" f KernelDef'AttrConstraint
           KernelDef'AttrConstraint
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _KernelDef'AttrConstraint'allowedValues
                 (\ x__ y__ -> x__{_KernelDef'AttrConstraint'allowedValues = y__}))
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

instance (a ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          b ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'allowedValues" f
           KernelDef'AttrConstraint
           KernelDef'AttrConstraint
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _KernelDef'AttrConstraint'allowedValues
                 (\ x__ y__ -> x__{_KernelDef'AttrConstraint'allowedValues = y__}))
              Prelude.id

instance Data.Default.Class.Default KernelDef'AttrConstraint where
        def
          = KernelDef'AttrConstraint{_KernelDef'AttrConstraint'name =
                                       Data.ProtoLens.fieldDefault,
                                     _KernelDef'AttrConstraint'allowedValues = Prelude.Nothing}

instance Data.ProtoLens.Message KernelDef'AttrConstraint where
        descriptor
          = let name__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
                      :: Data.ProtoLens.FieldDescriptor KernelDef'AttrConstraint
                allowedValues__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "allowed_values"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
                      (Data.ProtoLens.OptionalField maybe'allowedValues)
                      :: Data.ProtoLens.FieldDescriptor KernelDef'AttrConstraint
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.KernelDef.AttrConstraint")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
                    (Data.ProtoLens.Tag 2, allowedValues__field_descriptor)])
                (Data.Map.fromList
                   [("name", name__field_descriptor),
                    ("allowed_values", allowedValues__field_descriptor)])

allowedValues ::
              forall f s t a b .
                (Lens.Labels.HasLens "allowedValues" f s t a b) =>
                Lens.Family2.LensLike f s t a b
allowedValues
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowedValues")

constraint ::
           forall f s t a b . (Lens.Labels.HasLens "constraint" f s t a b) =>
             Lens.Family2.LensLike f s t a b
constraint
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "constraint")

deviceType ::
           forall f s t a b . (Lens.Labels.HasLens "deviceType" f s t a b) =>
             Lens.Family2.LensLike f s t a b
deviceType
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceType")

hostMemoryArg ::
              forall f s t a b .
                (Lens.Labels.HasLens "hostMemoryArg" f s t a b) =>
                Lens.Family2.LensLike f s t a b
hostMemoryArg
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hostMemoryArg")

label ::
      forall f s t a b . (Lens.Labels.HasLens "label" f s t a b) =>
        Lens.Family2.LensLike f s t a b
label
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "label")

maybe'allowedValues ::
                    forall f s t a b .
                      (Lens.Labels.HasLens "maybe'allowedValues" f s t a b) =>
                      Lens.Family2.LensLike f s t a b
maybe'allowedValues
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "maybe'allowedValues")

name ::
     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
       Lens.Family2.LensLike f s t a b
name
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")

op ::
   forall f s t a b . (Lens.Labels.HasLens "op" f s t a b) =>
     Lens.Family2.LensLike f s t a b
op
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "op")