{- This file was auto-generated from tensorflow/core/framework/graph.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.Graph 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.Function
import qualified Proto.Tensorflow.Core.Framework.NodeDef
import qualified Proto.Tensorflow.Core.Framework.Versions

data GraphDef = GraphDef{_GraphDef'node ::
                         [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
                         _GraphDef'versions ::
                         Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
                         _GraphDef'version :: Data.Int.Int32,
                         _GraphDef'library ::
                         Prelude.Maybe
                           Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary}
              deriving (Prelude.Show, Prelude.Eq)

type instance Data.ProtoLens.Field "node" GraphDef =
     [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef]

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

type instance Data.ProtoLens.Field "versions" GraphDef =
     Proto.Tensorflow.Core.Framework.Versions.VersionDef

instance Data.ProtoLens.HasField "versions" GraphDef GraphDef where
        field _
          = (Prelude..) maybe'versions
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

type instance Data.ProtoLens.Field "maybe'versions" GraphDef =
     Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef

instance Data.ProtoLens.HasField "maybe'versions" GraphDef GraphDef
         where
        field _
          = Lens.Family2.Unchecked.lens _GraphDef'versions
              (\ x__ y__ -> x__{_GraphDef'versions = y__})

type instance Data.ProtoLens.Field "version" GraphDef =
     Data.Int.Int32

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

type instance Data.ProtoLens.Field "library" GraphDef =
     Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary

instance Data.ProtoLens.HasField "library" GraphDef GraphDef where
        field _
          = (Prelude..) maybe'library
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

type instance Data.ProtoLens.Field "maybe'library" GraphDef =
     Prelude.Maybe
       Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary

instance Data.ProtoLens.HasField "maybe'library" GraphDef GraphDef
         where
        field _
          = Lens.Family2.Unchecked.lens _GraphDef'library
              (\ x__ y__ -> x__{_GraphDef'library = y__})

instance Data.Default.Class.Default GraphDef where
        def
          = GraphDef{_GraphDef'node = [],
                     _GraphDef'versions = Prelude.Nothing,
                     _GraphDef'version = Data.ProtoLens.fieldDefault,
                     _GraphDef'library = Prelude.Nothing}

instance Data.ProtoLens.Message GraphDef where
        descriptor
          = let node__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "node"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.NodeDef.NodeDef)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked node)
                versions__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "versions"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.Versions.VersionDef)
                      (Data.ProtoLens.OptionalField maybe'versions)
                version__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "version"
                      (Data.ProtoLens.Int32Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
                library__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "library"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary)
                      (Data.ProtoLens.OptionalField maybe'library)
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, node__field_descriptor),
                    (Data.ProtoLens.Tag 4, versions__field_descriptor),
                    (Data.ProtoLens.Tag 3, version__field_descriptor),
                    (Data.ProtoLens.Tag 2, library__field_descriptor)])
                (Data.Map.fromList
                   [("node", node__field_descriptor),
                    ("versions", versions__field_descriptor),
                    ("version", version__field_descriptor),
                    ("library", library__field_descriptor)])

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

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

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

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

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

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