{-# 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.DMS.Types.NestingLevelValue
-- 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.DMS.Types.NestingLevelValue
  ( NestingLevelValue
      ( ..,
        NestingLevelValue_None,
        NestingLevelValue_One
      ),
  )
where

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

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

pattern NestingLevelValue_None :: NestingLevelValue
pattern $bNestingLevelValue_None :: NestingLevelValue
$mNestingLevelValue_None :: forall r. NestingLevelValue -> (Void# -> r) -> (Void# -> r) -> r
NestingLevelValue_None = NestingLevelValue' "none"

pattern NestingLevelValue_One :: NestingLevelValue
pattern $bNestingLevelValue_One :: NestingLevelValue
$mNestingLevelValue_One :: forall r. NestingLevelValue -> (Void# -> r) -> (Void# -> r) -> r
NestingLevelValue_One = NestingLevelValue' "one"

{-# COMPLETE
  NestingLevelValue_None,
  NestingLevelValue_One,
  NestingLevelValue'
  #-}