{- This file was auto-generated from tensorflow/core/framework/variable.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.Variable 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 SaveSliceInfoDef = SaveSliceInfoDef{_SaveSliceInfoDef'fullName
                                         :: !Data.Text.Text,
                                         _SaveSliceInfoDef'fullShape :: ![Data.Int.Int64],
                                         _SaveSliceInfoDef'varOffset :: ![Data.Int.Int64],
                                         _SaveSliceInfoDef'varShape :: ![Data.Int.Int64]}
                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

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

instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "fullShape" f SaveSliceInfoDef SaveSliceInfoDef
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'fullShape
                 (\ x__ y__ -> x__{_SaveSliceInfoDef'fullShape = y__}))
              Prelude.id

instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "varOffset" f SaveSliceInfoDef SaveSliceInfoDef
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'varOffset
                 (\ x__ y__ -> x__{_SaveSliceInfoDef'varOffset = y__}))
              Prelude.id

instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "varShape" f SaveSliceInfoDef SaveSliceInfoDef
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'varShape
                 (\ x__ y__ -> x__{_SaveSliceInfoDef'varShape = y__}))
              Prelude.id

instance Data.Default.Class.Default SaveSliceInfoDef where
        def
          = SaveSliceInfoDef{_SaveSliceInfoDef'fullName =
                               Data.ProtoLens.fieldDefault,
                             _SaveSliceInfoDef'fullShape = [], _SaveSliceInfoDef'varOffset = [],
                             _SaveSliceInfoDef'varShape = []}

instance Data.ProtoLens.Message SaveSliceInfoDef where
        descriptor
          = let fullName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "full_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional fullName)
                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
                fullShape__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "full_shape"
                      (Data.ProtoLens.Int64Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed fullShape)
                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
                varOffset__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "var_offset"
                      (Data.ProtoLens.Int64Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed varOffset)
                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
                varShape__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "var_shape"
                      (Data.ProtoLens.Int64Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed varShape)
                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.SaveSliceInfoDef")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, fullName__field_descriptor),
                    (Data.ProtoLens.Tag 2, fullShape__field_descriptor),
                    (Data.ProtoLens.Tag 3, varOffset__field_descriptor),
                    (Data.ProtoLens.Tag 4, varShape__field_descriptor)])
                (Data.Map.fromList
                   [("full_name", fullName__field_descriptor),
                    ("full_shape", fullShape__field_descriptor),
                    ("var_offset", varOffset__field_descriptor),
                    ("var_shape", varShape__field_descriptor)])

data VariableDef = VariableDef{_VariableDef'variableName ::
                               !Data.Text.Text,
                               _VariableDef'initialValueName :: !Data.Text.Text,
                               _VariableDef'initializerName :: !Data.Text.Text,
                               _VariableDef'snapshotName :: !Data.Text.Text,
                               _VariableDef'saveSliceInfoDef :: !(Prelude.Maybe SaveSliceInfoDef),
                               _VariableDef'isResource :: !Prelude.Bool,
                               _VariableDef'trainable :: !Prelude.Bool}
                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

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

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

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

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

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

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

instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
         Lens.Labels.HasLens "isResource" f VariableDef VariableDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _VariableDef'isResource
                 (\ x__ y__ -> x__{_VariableDef'isResource = y__}))
              Prelude.id

instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
         Lens.Labels.HasLens "trainable" f VariableDef VariableDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _VariableDef'trainable
                 (\ x__ y__ -> x__{_VariableDef'trainable = y__}))
              Prelude.id

instance Data.Default.Class.Default VariableDef where
        def
          = VariableDef{_VariableDef'variableName =
                          Data.ProtoLens.fieldDefault,
                        _VariableDef'initialValueName = Data.ProtoLens.fieldDefault,
                        _VariableDef'initializerName = Data.ProtoLens.fieldDefault,
                        _VariableDef'snapshotName = Data.ProtoLens.fieldDefault,
                        _VariableDef'saveSliceInfoDef = Prelude.Nothing,
                        _VariableDef'isResource = Data.ProtoLens.fieldDefault,
                        _VariableDef'trainable = Data.ProtoLens.fieldDefault}

instance Data.ProtoLens.Message VariableDef where
        descriptor
          = let variableName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "variable_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional variableName)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
                initialValueName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "initial_value_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         initialValueName)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
                initializerName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "initializer_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional initializerName)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
                snapshotName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "snapshot_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional snapshotName)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
                saveSliceInfoDef__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "save_slice_info_def"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor SaveSliceInfoDef)
                      (Data.ProtoLens.OptionalField maybe'saveSliceInfoDef)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
                isResource__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "is_resource"
                      (Data.ProtoLens.BoolField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isResource)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
                trainable__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "trainable"
                      (Data.ProtoLens.BoolField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional trainable)
                      :: Data.ProtoLens.FieldDescriptor VariableDef
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.VariableDef")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, variableName__field_descriptor),
                    (Data.ProtoLens.Tag 6, initialValueName__field_descriptor),
                    (Data.ProtoLens.Tag 2, initializerName__field_descriptor),
                    (Data.ProtoLens.Tag 3, snapshotName__field_descriptor),
                    (Data.ProtoLens.Tag 4, saveSliceInfoDef__field_descriptor),
                    (Data.ProtoLens.Tag 5, isResource__field_descriptor),
                    (Data.ProtoLens.Tag 7, trainable__field_descriptor)])
                (Data.Map.fromList
                   [("variable_name", variableName__field_descriptor),
                    ("initial_value_name", initialValueName__field_descriptor),
                    ("initializer_name", initializerName__field_descriptor),
                    ("snapshot_name", snapshotName__field_descriptor),
                    ("save_slice_info_def", saveSliceInfoDef__field_descriptor),
                    ("is_resource", isResource__field_descriptor),
                    ("trainable", trainable__field_descriptor)])

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

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

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

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

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

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

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

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

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

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

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

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