{- This file was auto-generated from tensorflow/core/framework/tensor_shape.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.TensorShape 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

data TensorShapeProto = TensorShapeProto{_TensorShapeProto'dim ::
                                         [TensorShapeProto'Dim],
                                         _TensorShapeProto'unknownRank :: Prelude.Bool}
                      deriving (Prelude.Show, Prelude.Eq)

type instance Data.ProtoLens.Field "dim" TensorShapeProto =
     [TensorShapeProto'Dim]

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

type instance Data.ProtoLens.Field "unknownRank" TensorShapeProto =
     Prelude.Bool

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

instance Data.Default.Class.Default TensorShapeProto where
        def
          = TensorShapeProto{_TensorShapeProto'dim = [],
                             _TensorShapeProto'unknownRank = Data.ProtoLens.fieldDefault}

instance Data.ProtoLens.Message TensorShapeProto where
        descriptor
          = let dim__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "dim"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor TensorShapeProto'Dim)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked dim)
                unknownRank__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "unknown_rank"
                      (Data.ProtoLens.BoolField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional unknownRank)
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 2, dim__field_descriptor),
                    (Data.ProtoLens.Tag 3, unknownRank__field_descriptor)])
                (Data.Map.fromList
                   [("dim", dim__field_descriptor),
                    ("unknown_rank", unknownRank__field_descriptor)])

data TensorShapeProto'Dim = TensorShapeProto'Dim{_TensorShapeProto'Dim'size
                                                 :: Data.Int.Int64,
                                                 _TensorShapeProto'Dim'name :: Data.Text.Text}
                          deriving (Prelude.Show, Prelude.Eq)

type instance Data.ProtoLens.Field "size" TensorShapeProto'Dim =
     Data.Int.Int64

instance Data.ProtoLens.HasField "size" TensorShapeProto'Dim
         TensorShapeProto'Dim where
        field _
          = Lens.Family2.Unchecked.lens _TensorShapeProto'Dim'size
              (\ x__ y__ -> x__{_TensorShapeProto'Dim'size = y__})

type instance Data.ProtoLens.Field "name" TensorShapeProto'Dim =
     Data.Text.Text

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

instance Data.Default.Class.Default TensorShapeProto'Dim where
        def
          = TensorShapeProto'Dim{_TensorShapeProto'Dim'size =
                                   Data.ProtoLens.fieldDefault,
                                 _TensorShapeProto'Dim'name = Data.ProtoLens.fieldDefault}

instance Data.ProtoLens.Message TensorShapeProto'Dim where
        descriptor
          = let size__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "size"
                      (Data.ProtoLens.Int64Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional size)
                name__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, size__field_descriptor),
                    (Data.ProtoLens.Tag 2, name__field_descriptor)])
                (Data.Map.fromList
                   [("size", size__field_descriptor),
                    ("name", name__field_descriptor)])

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

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

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

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