{-# 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.ImageBuilder.Types.ImageType
-- 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.ImageBuilder.Types.ImageType
  ( ImageType
      ( ..,
        ImageType_AMI,
        ImageType_DOCKER
      ),
  )
where

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

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

pattern ImageType_AMI :: ImageType
pattern $bImageType_AMI :: ImageType
$mImageType_AMI :: forall r. ImageType -> (Void# -> r) -> (Void# -> r) -> r
ImageType_AMI = ImageType' "AMI"

pattern ImageType_DOCKER :: ImageType
pattern $bImageType_DOCKER :: ImageType
$mImageType_DOCKER :: forall r. ImageType -> (Void# -> r) -> (Void# -> r) -> r
ImageType_DOCKER = ImageType' "DOCKER"

{-# COMPLETE
  ImageType_AMI,
  ImageType_DOCKER,
  ImageType'
  #-}