{-# 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.CostExplorer.Types.MatchOption
-- 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.CostExplorer.Types.MatchOption
  ( MatchOption
      ( ..,
        MatchOption_ABSENT,
        MatchOption_CASE_INSENSITIVE,
        MatchOption_CASE_SENSITIVE,
        MatchOption_CONTAINS,
        MatchOption_ENDS_WITH,
        MatchOption_EQUALS,
        MatchOption_STARTS_WITH
      ),
  )
where

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

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

pattern MatchOption_ABSENT :: MatchOption
pattern $bMatchOption_ABSENT :: MatchOption
$mMatchOption_ABSENT :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_ABSENT = MatchOption' "ABSENT"

pattern MatchOption_CASE_INSENSITIVE :: MatchOption
pattern $bMatchOption_CASE_INSENSITIVE :: MatchOption
$mMatchOption_CASE_INSENSITIVE :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_CASE_INSENSITIVE = MatchOption' "CASE_INSENSITIVE"

pattern MatchOption_CASE_SENSITIVE :: MatchOption
pattern $bMatchOption_CASE_SENSITIVE :: MatchOption
$mMatchOption_CASE_SENSITIVE :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_CASE_SENSITIVE = MatchOption' "CASE_SENSITIVE"

pattern MatchOption_CONTAINS :: MatchOption
pattern $bMatchOption_CONTAINS :: MatchOption
$mMatchOption_CONTAINS :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_CONTAINS = MatchOption' "CONTAINS"

pattern MatchOption_ENDS_WITH :: MatchOption
pattern $bMatchOption_ENDS_WITH :: MatchOption
$mMatchOption_ENDS_WITH :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_ENDS_WITH = MatchOption' "ENDS_WITH"

pattern MatchOption_EQUALS :: MatchOption
pattern $bMatchOption_EQUALS :: MatchOption
$mMatchOption_EQUALS :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_EQUALS = MatchOption' "EQUALS"

pattern MatchOption_STARTS_WITH :: MatchOption
pattern $bMatchOption_STARTS_WITH :: MatchOption
$mMatchOption_STARTS_WITH :: forall r. MatchOption -> (Void# -> r) -> (Void# -> r) -> r
MatchOption_STARTS_WITH = MatchOption' "STARTS_WITH"

{-# COMPLETE
  MatchOption_ABSENT,
  MatchOption_CASE_INSENSITIVE,
  MatchOption_CASE_SENSITIVE,
  MatchOption_CONTAINS,
  MatchOption_ENDS_WITH,
  MatchOption_EQUALS,
  MatchOption_STARTS_WITH,
  MatchOption'
  #-}