{- This file was auto-generated from tensorflow/core/framework/node_def.proto by the proto-lens-protoc program. -}
{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
  PatternSynonyms #-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
module Proto.Tensorflow.Core.Framework.NodeDef where
import qualified Prelude
import qualified Data.Int
import qualified 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 Proto.Tensorflow.Core.Framework.AttrValue

data NodeDef = NodeDef{_NodeDef'name :: Data.Text.Text,
                       _NodeDef'op :: Data.Text.Text, _NodeDef'input :: [Data.Text.Text],
                       _NodeDef'device :: Data.Text.Text,
                       _NodeDef'attr ::
                       Data.Map.Map Data.Text.Text
                         Proto.Tensorflow.Core.Framework.AttrValue.AttrValue}
             deriving (Prelude.Show, Prelude.Eq)

type instance Data.ProtoLens.Field "name" NodeDef = Data.Text.Text

instance Data.ProtoLens.HasField "name" NodeDef NodeDef where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'name
              (\ x__ y__ -> x__{_NodeDef'name = y__})

type instance Data.ProtoLens.Field "op" NodeDef = Data.Text.Text

instance Data.ProtoLens.HasField "op" NodeDef NodeDef where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'op
              (\ x__ y__ -> x__{_NodeDef'op = y__})

type instance Data.ProtoLens.Field "input" NodeDef =
     [Data.Text.Text]

instance Data.ProtoLens.HasField "input" NodeDef NodeDef where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'input
              (\ x__ y__ -> x__{_NodeDef'input = y__})

type instance Data.ProtoLens.Field "device" NodeDef =
     Data.Text.Text

instance Data.ProtoLens.HasField "device" NodeDef NodeDef where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'device
              (\ x__ y__ -> x__{_NodeDef'device = y__})

type instance Data.ProtoLens.Field "attr" NodeDef =
     Data.Map.Map Data.Text.Text
       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue

instance Data.ProtoLens.HasField "attr" NodeDef NodeDef where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'attr
              (\ x__ y__ -> x__{_NodeDef'attr = y__})

instance Data.Default.Class.Default NodeDef where
        def
          = NodeDef{_NodeDef'name = Data.ProtoLens.fieldDefault,
                    _NodeDef'op = Data.ProtoLens.fieldDefault, _NodeDef'input = [],
                    _NodeDef'device = Data.ProtoLens.fieldDefault,
                    _NodeDef'attr = Data.Map.empty}

instance Data.ProtoLens.Message NodeDef 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)
                op__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "op"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional op)
                input__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "input"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked input)
                device__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "device"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
                attr__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "attr"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor NodeDef'AttrEntry)
                      (Data.ProtoLens.MapField key value attr)
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
                    (Data.ProtoLens.Tag 2, op__field_descriptor),
                    (Data.ProtoLens.Tag 3, input__field_descriptor),
                    (Data.ProtoLens.Tag 4, device__field_descriptor),
                    (Data.ProtoLens.Tag 5, attr__field_descriptor)])
                (Data.Map.fromList
                   [("name", name__field_descriptor), ("op", op__field_descriptor),
                    ("input", input__field_descriptor),
                    ("device", device__field_descriptor),
                    ("attr", attr__field_descriptor)])

data NodeDef'AttrEntry = NodeDef'AttrEntry{_NodeDef'AttrEntry'key
                                           :: Data.Text.Text,
                                           _NodeDef'AttrEntry'value ::
                                           Prelude.Maybe
                                             Proto.Tensorflow.Core.Framework.AttrValue.AttrValue}
                       deriving (Prelude.Show, Prelude.Eq)

type instance Data.ProtoLens.Field "key" NodeDef'AttrEntry =
     Data.Text.Text

instance Data.ProtoLens.HasField "key" NodeDef'AttrEntry
         NodeDef'AttrEntry where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'key
              (\ x__ y__ -> x__{_NodeDef'AttrEntry'key = y__})

type instance Data.ProtoLens.Field "value" NodeDef'AttrEntry =
     Proto.Tensorflow.Core.Framework.AttrValue.AttrValue

instance Data.ProtoLens.HasField "value" NodeDef'AttrEntry
         NodeDef'AttrEntry where
        field _
          = (Prelude..) maybe'value
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

type instance Data.ProtoLens.Field "maybe'value" NodeDef'AttrEntry
     = Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue

instance Data.ProtoLens.HasField "maybe'value" NodeDef'AttrEntry
         NodeDef'AttrEntry where
        field _
          = Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'value
              (\ x__ y__ -> x__{_NodeDef'AttrEntry'value = y__})

instance Data.Default.Class.Default NodeDef'AttrEntry where
        def
          = NodeDef'AttrEntry{_NodeDef'AttrEntry'key =
                                Data.ProtoLens.fieldDefault,
                              _NodeDef'AttrEntry'value = Prelude.Nothing}

instance Data.ProtoLens.Message NodeDef'AttrEntry where
        descriptor
          = let key__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "key"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
                value__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "value"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
                      (Data.ProtoLens.OptionalField maybe'value)
              in
              Data.ProtoLens.MessageDescriptor
                (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)])

attr ::
     forall msg msg' . Data.ProtoLens.HasField "attr" msg msg' =>
       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "attr" msg)
         (Data.ProtoLens.Field "attr" msg')
attr
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "attr")

device ::
       forall msg msg' . Data.ProtoLens.HasField "device" msg msg' =>
         Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "device" msg)
           (Data.ProtoLens.Field "device" msg')
device
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "device")

input ::
      forall msg msg' . Data.ProtoLens.HasField "input" msg msg' =>
        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "input" msg)
          (Data.ProtoLens.Field "input" msg')
input
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "input")

key ::
    forall msg msg' . Data.ProtoLens.HasField "key" msg msg' =>
      Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "key" msg)
        (Data.ProtoLens.Field "key" msg')
key
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "key")

maybe'value ::
            forall msg msg' . Data.ProtoLens.HasField "maybe'value" msg msg' =>
              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'value" msg)
                (Data.ProtoLens.Field "maybe'value" msg')
maybe'value
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'value")

name ::
     forall msg msg' . Data.ProtoLens.HasField "name" msg msg' =>
       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "name" msg)
         (Data.ProtoLens.Field "name" msg')
name
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "name")

op ::
   forall msg msg' . Data.ProtoLens.HasField "op" msg msg' =>
     Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "op" msg)
       (Data.ProtoLens.Field "op" msg')
op
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "op")

value ::
      forall msg msg' . Data.ProtoLens.HasField "value" msg msg' =>
        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "value" msg)
          (Data.ProtoLens.Field "value" msg')
value
  = Data.ProtoLens.field
      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "value")