{-# 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.CloudDirectory.Types.RangeMode
-- 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.CloudDirectory.Types.RangeMode
  ( RangeMode
      ( ..,
        RangeMode_EXCLUSIVE,
        RangeMode_FIRST,
        RangeMode_INCLUSIVE,
        RangeMode_LAST,
        RangeMode_LAST_BEFORE_MISSING_VALUES
      ),
  )
where

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

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

pattern RangeMode_EXCLUSIVE :: RangeMode
pattern $bRangeMode_EXCLUSIVE :: RangeMode
$mRangeMode_EXCLUSIVE :: forall r. RangeMode -> (Void# -> r) -> (Void# -> r) -> r
RangeMode_EXCLUSIVE = RangeMode' "EXCLUSIVE"

pattern RangeMode_FIRST :: RangeMode
pattern $bRangeMode_FIRST :: RangeMode
$mRangeMode_FIRST :: forall r. RangeMode -> (Void# -> r) -> (Void# -> r) -> r
RangeMode_FIRST = RangeMode' "FIRST"

pattern RangeMode_INCLUSIVE :: RangeMode
pattern $bRangeMode_INCLUSIVE :: RangeMode
$mRangeMode_INCLUSIVE :: forall r. RangeMode -> (Void# -> r) -> (Void# -> r) -> r
RangeMode_INCLUSIVE = RangeMode' "INCLUSIVE"

pattern RangeMode_LAST :: RangeMode
pattern $bRangeMode_LAST :: RangeMode
$mRangeMode_LAST :: forall r. RangeMode -> (Void# -> r) -> (Void# -> r) -> r
RangeMode_LAST = RangeMode' "LAST"

pattern RangeMode_LAST_BEFORE_MISSING_VALUES :: RangeMode
pattern $bRangeMode_LAST_BEFORE_MISSING_VALUES :: RangeMode
$mRangeMode_LAST_BEFORE_MISSING_VALUES :: forall r. RangeMode -> (Void# -> r) -> (Void# -> r) -> r
RangeMode_LAST_BEFORE_MISSING_VALUES = RangeMode' "LAST_BEFORE_MISSING_VALUES"

{-# COMPLETE
  RangeMode_EXCLUSIVE,
  RangeMode_FIRST,
  RangeMode_INCLUSIVE,
  RangeMode_LAST,
  RangeMode_LAST_BEFORE_MISSING_VALUES,
  RangeMode'
  #-}