{- This file was auto-generated from tensorflow/core/util/saved_tensor_slice.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.Util.SavedTensorSlice 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.Tensor
import qualified Proto.Tensorflow.Core.Framework.TensorShape
import qualified Proto.Tensorflow.Core.Framework.TensorSlice
import qualified Proto.Tensorflow.Core.Framework.Types
import qualified Proto.Tensorflow.Core.Framework.Versions

data SavedSlice = SavedSlice{_SavedSlice'name :: !Data.Text.Text,
                             _SavedSlice'slice ::
                             !(Prelude.Maybe
                                 Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto),
                             _SavedSlice'data' ::
                             !(Prelude.Maybe
                                 Proto.Tensorflow.Core.Framework.Tensor.TensorProto)}
                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

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

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

instance (a ~
            Prelude.Maybe
              Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto,
          b ~
            Prelude.Maybe
              Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'slice" f SavedSlice SavedSlice a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedSlice'slice
                 (\ x__ y__ -> x__{_SavedSlice'slice = y__}))
              Prelude.id

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

instance (a ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
          b ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'data'" f SavedSlice SavedSlice a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedSlice'data'
                 (\ x__ y__ -> x__{_SavedSlice'data' = y__}))
              Prelude.id

instance Data.Default.Class.Default SavedSlice where
        def
          = SavedSlice{_SavedSlice'name = Data.ProtoLens.fieldDefault,
                       _SavedSlice'slice = Prelude.Nothing,
                       _SavedSlice'data' = Prelude.Nothing}

instance Data.ProtoLens.Message SavedSlice 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 SavedSlice
                slice__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "slice"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto)
                      (Data.ProtoLens.OptionalField maybe'slice)
                      :: Data.ProtoLens.FieldDescriptor SavedSlice
                data'__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "data"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
                      (Data.ProtoLens.OptionalField maybe'data')
                      :: Data.ProtoLens.FieldDescriptor SavedSlice
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.SavedSlice")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
                    (Data.ProtoLens.Tag 2, slice__field_descriptor),
                    (Data.ProtoLens.Tag 3, data'__field_descriptor)])
                (Data.Map.fromList
                   [("name", name__field_descriptor),
                    ("slice", slice__field_descriptor),
                    ("data", data'__field_descriptor)])

data SavedSliceMeta = SavedSliceMeta{_SavedSliceMeta'name ::
                                     !Data.Text.Text,
                                     _SavedSliceMeta'shape ::
                                     !(Prelude.Maybe
                                         Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
                                     _SavedSliceMeta'type' ::
                                     !Proto.Tensorflow.Core.Framework.Types.DataType,
                                     _SavedSliceMeta'slice ::
                                     ![Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto]}
                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

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

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

instance (a ~
            Prelude.Maybe
              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
          b ~
            Prelude.Maybe
              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'shape" f SavedSliceMeta SavedSliceMeta a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedSliceMeta'shape
                 (\ x__ y__ -> x__{_SavedSliceMeta'shape = y__}))
              Prelude.id

instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "type'" f SavedSliceMeta SavedSliceMeta a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedSliceMeta'type'
                 (\ x__ y__ -> x__{_SavedSliceMeta'type' = y__}))
              Prelude.id

instance (a ~
            [Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto],
          b ~ [Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "slice" f SavedSliceMeta SavedSliceMeta a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedSliceMeta'slice
                 (\ x__ y__ -> x__{_SavedSliceMeta'slice = y__}))
              Prelude.id

instance Data.Default.Class.Default SavedSliceMeta where
        def
          = SavedSliceMeta{_SavedSliceMeta'name =
                             Data.ProtoLens.fieldDefault,
                           _SavedSliceMeta'shape = Prelude.Nothing,
                           _SavedSliceMeta'type' = Data.Default.Class.def,
                           _SavedSliceMeta'slice = []}

instance Data.ProtoLens.Message SavedSliceMeta 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 SavedSliceMeta
                shape__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "shape"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
                      (Data.ProtoLens.OptionalField maybe'shape)
                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
                type'__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "type"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.Types.DataType)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
                slice__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "slice"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked slice)
                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.SavedSliceMeta")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
                    (Data.ProtoLens.Tag 2, shape__field_descriptor),
                    (Data.ProtoLens.Tag 3, type'__field_descriptor),
                    (Data.ProtoLens.Tag 4, slice__field_descriptor)])
                (Data.Map.fromList
                   [("name", name__field_descriptor),
                    ("shape", shape__field_descriptor),
                    ("type", type'__field_descriptor),
                    ("slice", slice__field_descriptor)])

data SavedTensorSliceMeta = SavedTensorSliceMeta{_SavedTensorSliceMeta'tensor
                                                 :: ![SavedSliceMeta],
                                                 _SavedTensorSliceMeta'versions ::
                                                 !(Prelude.Maybe
                                                     Proto.Tensorflow.Core.Framework.Versions.VersionDef)}
                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

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

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

instance (a ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
          b ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'versions" f SavedTensorSliceMeta
           SavedTensorSliceMeta
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedTensorSliceMeta'versions
                 (\ x__ y__ -> x__{_SavedTensorSliceMeta'versions = y__}))
              Prelude.id

instance Data.Default.Class.Default SavedTensorSliceMeta where
        def
          = SavedTensorSliceMeta{_SavedTensorSliceMeta'tensor = [],
                                 _SavedTensorSliceMeta'versions = Prelude.Nothing}

instance Data.ProtoLens.Message SavedTensorSliceMeta where
        descriptor
          = let tensor__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "tensor"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor SavedSliceMeta)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked tensor)
                      :: Data.ProtoLens.FieldDescriptor SavedTensorSliceMeta
                versions__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "versions"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.Versions.VersionDef)
                      (Data.ProtoLens.OptionalField maybe'versions)
                      :: Data.ProtoLens.FieldDescriptor SavedTensorSliceMeta
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.SavedTensorSliceMeta")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, tensor__field_descriptor),
                    (Data.ProtoLens.Tag 2, versions__field_descriptor)])
                (Data.Map.fromList
                   [("tensor", tensor__field_descriptor),
                    ("versions", versions__field_descriptor)])

data SavedTensorSlices = SavedTensorSlices{_SavedTensorSlices'meta
                                           :: !(Prelude.Maybe SavedTensorSliceMeta),
                                           _SavedTensorSlices'data' :: !(Prelude.Maybe SavedSlice)}
                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ SavedTensorSliceMeta, b ~ SavedTensorSliceMeta,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "meta" f SavedTensorSlices SavedTensorSlices a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedTensorSlices'meta
                 (\ x__ y__ -> x__{_SavedTensorSlices'meta = y__}))
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

instance (a ~ Prelude.Maybe SavedTensorSliceMeta,
          b ~ Prelude.Maybe SavedTensorSliceMeta, Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'meta" f SavedTensorSlices
           SavedTensorSlices
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedTensorSlices'meta
                 (\ x__ y__ -> x__{_SavedTensorSlices'meta = y__}))
              Prelude.id

instance (a ~ SavedSlice, b ~ SavedSlice, Prelude.Functor f) =>
         Lens.Labels.HasLens "data'" f SavedTensorSlices SavedTensorSlices a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedTensorSlices'data'
                 (\ x__ y__ -> x__{_SavedTensorSlices'data' = y__}))
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

instance (a ~ Prelude.Maybe SavedSlice,
          b ~ Prelude.Maybe SavedSlice, Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'data'" f SavedTensorSlices
           SavedTensorSlices
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SavedTensorSlices'data'
                 (\ x__ y__ -> x__{_SavedTensorSlices'data' = y__}))
              Prelude.id

instance Data.Default.Class.Default SavedTensorSlices where
        def
          = SavedTensorSlices{_SavedTensorSlices'meta = Prelude.Nothing,
                              _SavedTensorSlices'data' = Prelude.Nothing}

instance Data.ProtoLens.Message SavedTensorSlices where
        descriptor
          = let meta__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "meta"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor SavedTensorSliceMeta)
                      (Data.ProtoLens.OptionalField maybe'meta)
                      :: Data.ProtoLens.FieldDescriptor SavedTensorSlices
                data'__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "data"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor SavedSlice)
                      (Data.ProtoLens.OptionalField maybe'data')
                      :: Data.ProtoLens.FieldDescriptor SavedTensorSlices
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.SavedTensorSlices")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, meta__field_descriptor),
                    (Data.ProtoLens.Tag 2, data'__field_descriptor)])
                (Data.Map.fromList
                   [("meta", meta__field_descriptor),
                    ("data", data'__field_descriptor)])

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

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

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

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

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

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

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

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

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

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

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

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

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