{- This file was auto-generated from tensorflow/core/protobuf/cluster.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.Protobuf.Cluster 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

data ClusterDef = ClusterDef{_ClusterDef'job :: ![JobDef]}
                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

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

instance Data.Default.Class.Default ClusterDef where
        def = ClusterDef{_ClusterDef'job = []}

instance Data.ProtoLens.Message ClusterDef where
        descriptor
          = let job__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "job"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor JobDef)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked job)
                      :: Data.ProtoLens.FieldDescriptor ClusterDef
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.ClusterDef")
                (Data.Map.fromList [(Data.ProtoLens.Tag 1, job__field_descriptor)])
                (Data.Map.fromList [("job", job__field_descriptor)])

data JobDef = JobDef{_JobDef'name :: !Data.Text.Text,
                     _JobDef'tasks :: !(Data.Map.Map Data.Int.Int32 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 "name" f JobDef JobDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _JobDef'name
                 (\ x__ y__ -> x__{_JobDef'name = y__}))
              Prelude.id

instance (a ~ Data.Map.Map Data.Int.Int32 Data.Text.Text,
          b ~ Data.Map.Map Data.Int.Int32 Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "tasks" f JobDef JobDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _JobDef'tasks
                 (\ x__ y__ -> x__{_JobDef'tasks = y__}))
              Prelude.id

instance Data.Default.Class.Default JobDef where
        def
          = JobDef{_JobDef'name = Data.ProtoLens.fieldDefault,
                   _JobDef'tasks = Data.Map.empty}

instance Data.ProtoLens.Message JobDef 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 JobDef
                tasks__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "tasks"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor JobDef'TasksEntry)
                      (Data.ProtoLens.MapField key value tasks)
                      :: Data.ProtoLens.FieldDescriptor JobDef
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.JobDef")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
                    (Data.ProtoLens.Tag 2, tasks__field_descriptor)])
                (Data.Map.fromList
                   [("name", name__field_descriptor),
                    ("tasks", tasks__field_descriptor)])

data JobDef'TasksEntry = JobDef'TasksEntry{_JobDef'TasksEntry'key
                                           :: !Data.Int.Int32,
                                           _JobDef'TasksEntry'value :: !Data.Text.Text}
                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "key" f JobDef'TasksEntry JobDef'TasksEntry a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _JobDef'TasksEntry'key
                 (\ x__ y__ -> x__{_JobDef'TasksEntry'key = y__}))
              Prelude.id

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

instance Data.Default.Class.Default JobDef'TasksEntry where
        def
          = JobDef'TasksEntry{_JobDef'TasksEntry'key =
                                Data.ProtoLens.fieldDefault,
                              _JobDef'TasksEntry'value = Data.ProtoLens.fieldDefault}

instance Data.ProtoLens.Message JobDef'TasksEntry where
        descriptor
          = let key__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "key"
                      (Data.ProtoLens.Int32Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
                      :: Data.ProtoLens.FieldDescriptor JobDef'TasksEntry
                value__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "value"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
                      :: Data.ProtoLens.FieldDescriptor JobDef'TasksEntry
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.JobDef.TasksEntry")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
                (Data.Map.fromList
                   [("key", key__field_descriptor),
                    ("value", value__field_descriptor)])

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

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

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")

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

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