{-# 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.EC2.Types.HypervisorType
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EC2.Types.HypervisorType
  ( HypervisorType
      ( ..,
        HypervisorType_Ovm,
        HypervisorType_Xen
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import qualified Amazonka.Prelude as Prelude

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

pattern HypervisorType_Ovm :: HypervisorType
pattern $bHypervisorType_Ovm :: HypervisorType
$mHypervisorType_Ovm :: forall {r}. HypervisorType -> ((# #) -> r) -> ((# #) -> r) -> r
HypervisorType_Ovm = HypervisorType' "ovm"

pattern HypervisorType_Xen :: HypervisorType
pattern $bHypervisorType_Xen :: HypervisorType
$mHypervisorType_Xen :: forall {r}. HypervisorType -> ((# #) -> r) -> ((# #) -> r) -> r
HypervisorType_Xen = HypervisorType' "xen"

{-# COMPLETE
  HypervisorType_Ovm,
  HypervisorType_Xen,
  HypervisorType'
  #-}