{-# 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.EMR.Types.ComputeLimitsUnitType
-- 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.EMR.Types.ComputeLimitsUnitType
  ( ComputeLimitsUnitType
      ( ..,
        ComputeLimitsUnitType_InstanceFleetUnits,
        ComputeLimitsUnitType_Instances,
        ComputeLimitsUnitType_VCPU
      ),
  )
where

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

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

pattern ComputeLimitsUnitType_InstanceFleetUnits :: ComputeLimitsUnitType
pattern $bComputeLimitsUnitType_InstanceFleetUnits :: ComputeLimitsUnitType
$mComputeLimitsUnitType_InstanceFleetUnits :: forall r.
ComputeLimitsUnitType -> (Void# -> r) -> (Void# -> r) -> r
ComputeLimitsUnitType_InstanceFleetUnits = ComputeLimitsUnitType' "InstanceFleetUnits"

pattern ComputeLimitsUnitType_Instances :: ComputeLimitsUnitType
pattern $bComputeLimitsUnitType_Instances :: ComputeLimitsUnitType
$mComputeLimitsUnitType_Instances :: forall r.
ComputeLimitsUnitType -> (Void# -> r) -> (Void# -> r) -> r
ComputeLimitsUnitType_Instances = ComputeLimitsUnitType' "Instances"

pattern ComputeLimitsUnitType_VCPU :: ComputeLimitsUnitType
pattern $bComputeLimitsUnitType_VCPU :: ComputeLimitsUnitType
$mComputeLimitsUnitType_VCPU :: forall r.
ComputeLimitsUnitType -> (Void# -> r) -> (Void# -> r) -> r
ComputeLimitsUnitType_VCPU = ComputeLimitsUnitType' "VCPU"

{-# COMPLETE
  ComputeLimitsUnitType_InstanceFleetUnits,
  ComputeLimitsUnitType_Instances,
  ComputeLimitsUnitType_VCPU,
  ComputeLimitsUnitType'
  #-}