{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.DataSync.Types.SmbVersion
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DataSync.Types.SmbVersion
  ( SmbVersion
      ( ..,
        SmbVersion_AUTOMATIC,
        SmbVersion_SMB2,
        SmbVersion_SMB3
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype SmbVersion = SmbVersion'
  { SmbVersion -> Text
fromSmbVersion ::
      Core.Text
  }
  deriving stock
    ( Int -> SmbVersion -> ShowS
[SmbVersion] -> ShowS
SmbVersion -> String
(Int -> SmbVersion -> ShowS)
-> (SmbVersion -> String)
-> ([SmbVersion] -> ShowS)
-> Show SmbVersion
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SmbVersion] -> ShowS
$cshowList :: [SmbVersion] -> ShowS
show :: SmbVersion -> String
$cshow :: SmbVersion -> String
showsPrec :: Int -> SmbVersion -> ShowS
$cshowsPrec :: Int -> SmbVersion -> ShowS
Prelude.Show,
      ReadPrec [SmbVersion]
ReadPrec SmbVersion
Int -> ReadS SmbVersion
ReadS [SmbVersion]
(Int -> ReadS SmbVersion)
-> ReadS [SmbVersion]
-> ReadPrec SmbVersion
-> ReadPrec [SmbVersion]
-> Read SmbVersion
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SmbVersion]
$creadListPrec :: ReadPrec [SmbVersion]
readPrec :: ReadPrec SmbVersion
$creadPrec :: ReadPrec SmbVersion
readList :: ReadS [SmbVersion]
$creadList :: ReadS [SmbVersion]
readsPrec :: Int -> ReadS SmbVersion
$creadsPrec :: Int -> ReadS SmbVersion
Prelude.Read,
      SmbVersion -> SmbVersion -> Bool
(SmbVersion -> SmbVersion -> Bool)
-> (SmbVersion -> SmbVersion -> Bool) -> Eq SmbVersion
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SmbVersion -> SmbVersion -> Bool
$c/= :: SmbVersion -> SmbVersion -> Bool
== :: SmbVersion -> SmbVersion -> Bool
$c== :: SmbVersion -> SmbVersion -> Bool
Prelude.Eq,
      Eq SmbVersion
Eq SmbVersion
-> (SmbVersion -> SmbVersion -> Ordering)
-> (SmbVersion -> SmbVersion -> Bool)
-> (SmbVersion -> SmbVersion -> Bool)
-> (SmbVersion -> SmbVersion -> Bool)
-> (SmbVersion -> SmbVersion -> Bool)
-> (SmbVersion -> SmbVersion -> SmbVersion)
-> (SmbVersion -> SmbVersion -> SmbVersion)
-> Ord SmbVersion
SmbVersion -> SmbVersion -> Bool
SmbVersion -> SmbVersion -> Ordering
SmbVersion -> SmbVersion -> SmbVersion
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: SmbVersion -> SmbVersion -> SmbVersion
$cmin :: SmbVersion -> SmbVersion -> SmbVersion
max :: SmbVersion -> SmbVersion -> SmbVersion
$cmax :: SmbVersion -> SmbVersion -> SmbVersion
>= :: SmbVersion -> SmbVersion -> Bool
$c>= :: SmbVersion -> SmbVersion -> Bool
> :: SmbVersion -> SmbVersion -> Bool
$c> :: SmbVersion -> SmbVersion -> Bool
<= :: SmbVersion -> SmbVersion -> Bool
$c<= :: SmbVersion -> SmbVersion -> Bool
< :: SmbVersion -> SmbVersion -> Bool
$c< :: SmbVersion -> SmbVersion -> Bool
compare :: SmbVersion -> SmbVersion -> Ordering
$ccompare :: SmbVersion -> SmbVersion -> Ordering
$cp1Ord :: Eq SmbVersion
Prelude.Ord,
      (forall x. SmbVersion -> Rep SmbVersion x)
-> (forall x. Rep SmbVersion x -> SmbVersion) -> Generic SmbVersion
forall x. Rep SmbVersion x -> SmbVersion
forall x. SmbVersion -> Rep SmbVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SmbVersion x -> SmbVersion
$cfrom :: forall x. SmbVersion -> Rep SmbVersion x
Prelude.Generic
    )
  deriving newtype
    ( Int -> SmbVersion -> Int
SmbVersion -> Int
(Int -> SmbVersion -> Int)
-> (SmbVersion -> Int) -> Hashable SmbVersion
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: SmbVersion -> Int
$chash :: SmbVersion -> Int
hashWithSalt :: Int -> SmbVersion -> Int
$chashWithSalt :: Int -> SmbVersion -> Int
Prelude.Hashable,
      SmbVersion -> ()
(SmbVersion -> ()) -> NFData SmbVersion
forall a. (a -> ()) -> NFData a
rnf :: SmbVersion -> ()
$crnf :: SmbVersion -> ()
Prelude.NFData,
      Text -> Either String SmbVersion
(Text -> Either String SmbVersion) -> FromText SmbVersion
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String SmbVersion
$cfromText :: Text -> Either String SmbVersion
Core.FromText,
      SmbVersion -> Text
(SmbVersion -> Text) -> ToText SmbVersion
forall a. (a -> Text) -> ToText a
toText :: SmbVersion -> Text
$ctoText :: SmbVersion -> Text
Core.ToText,
      SmbVersion -> ByteString
(SmbVersion -> ByteString) -> ToByteString SmbVersion
forall a. (a -> ByteString) -> ToByteString a
toBS :: SmbVersion -> ByteString
$ctoBS :: SmbVersion -> ByteString
Core.ToByteString,
      SmbVersion -> ByteStringBuilder
(SmbVersion -> ByteStringBuilder) -> ToLog SmbVersion
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: SmbVersion -> ByteStringBuilder
$cbuild :: SmbVersion -> ByteStringBuilder
Core.ToLog,
      HeaderName -> SmbVersion -> [Header]
(HeaderName -> SmbVersion -> [Header]) -> ToHeader SmbVersion
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> SmbVersion -> [Header]
$ctoHeader :: HeaderName -> SmbVersion -> [Header]
Core.ToHeader,
      SmbVersion -> QueryString
(SmbVersion -> QueryString) -> ToQuery SmbVersion
forall a. (a -> QueryString) -> ToQuery a
toQuery :: SmbVersion -> QueryString
$ctoQuery :: SmbVersion -> QueryString
Core.ToQuery,
      Value -> Parser [SmbVersion]
Value -> Parser SmbVersion
(Value -> Parser SmbVersion)
-> (Value -> Parser [SmbVersion]) -> FromJSON SmbVersion
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [SmbVersion]
$cparseJSONList :: Value -> Parser [SmbVersion]
parseJSON :: Value -> Parser SmbVersion
$cparseJSON :: Value -> Parser SmbVersion
Core.FromJSON,
      FromJSONKeyFunction [SmbVersion]
FromJSONKeyFunction SmbVersion
FromJSONKeyFunction SmbVersion
-> FromJSONKeyFunction [SmbVersion] -> FromJSONKey SmbVersion
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [SmbVersion]
$cfromJSONKeyList :: FromJSONKeyFunction [SmbVersion]
fromJSONKey :: FromJSONKeyFunction SmbVersion
$cfromJSONKey :: FromJSONKeyFunction SmbVersion
Core.FromJSONKey,
      [SmbVersion] -> Encoding
[SmbVersion] -> Value
SmbVersion -> Encoding
SmbVersion -> Value
(SmbVersion -> Value)
-> (SmbVersion -> Encoding)
-> ([SmbVersion] -> Value)
-> ([SmbVersion] -> Encoding)
-> ToJSON SmbVersion
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [SmbVersion] -> Encoding
$ctoEncodingList :: [SmbVersion] -> Encoding
toJSONList :: [SmbVersion] -> Value
$ctoJSONList :: [SmbVersion] -> Value
toEncoding :: SmbVersion -> Encoding
$ctoEncoding :: SmbVersion -> Encoding
toJSON :: SmbVersion -> Value
$ctoJSON :: SmbVersion -> Value
Core.ToJSON,
      ToJSONKeyFunction [SmbVersion]
ToJSONKeyFunction SmbVersion
ToJSONKeyFunction SmbVersion
-> ToJSONKeyFunction [SmbVersion] -> ToJSONKey SmbVersion
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [SmbVersion]
$ctoJSONKeyList :: ToJSONKeyFunction [SmbVersion]
toJSONKey :: ToJSONKeyFunction SmbVersion
$ctoJSONKey :: ToJSONKeyFunction SmbVersion
Core.ToJSONKey,
      [Node] -> Either String SmbVersion
([Node] -> Either String SmbVersion) -> FromXML SmbVersion
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String SmbVersion
$cparseXML :: [Node] -> Either String SmbVersion
Core.FromXML,
      SmbVersion -> XML
(SmbVersion -> XML) -> ToXML SmbVersion
forall a. (a -> XML) -> ToXML a
toXML :: SmbVersion -> XML
$ctoXML :: SmbVersion -> XML
Core.ToXML
    )

pattern SmbVersion_AUTOMATIC :: SmbVersion
pattern $bSmbVersion_AUTOMATIC :: SmbVersion
$mSmbVersion_AUTOMATIC :: forall r. SmbVersion -> (Void# -> r) -> (Void# -> r) -> r
SmbVersion_AUTOMATIC = SmbVersion' "AUTOMATIC"

pattern SmbVersion_SMB2 :: SmbVersion
pattern $bSmbVersion_SMB2 :: SmbVersion
$mSmbVersion_SMB2 :: forall r. SmbVersion -> (Void# -> r) -> (Void# -> r) -> r
SmbVersion_SMB2 = SmbVersion' "SMB2"

pattern SmbVersion_SMB3 :: SmbVersion
pattern $bSmbVersion_SMB3 :: SmbVersion
$mSmbVersion_SMB3 :: forall r. SmbVersion -> (Void# -> r) -> (Void# -> r) -> r
SmbVersion_SMB3 = SmbVersion' "SMB3"

{-# COMPLETE
  SmbVersion_AUTOMATIC,
  SmbVersion_SMB2,
  SmbVersion_SMB3,
  SmbVersion'
  #-}