{-# 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.SSM.Types.OperatingSystem
-- 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.SSM.Types.OperatingSystem
  ( OperatingSystem
      ( ..,
        OperatingSystem_AMAZON_LINUX,
        OperatingSystem_AMAZON_LINUX_2,
        OperatingSystem_CENTOS,
        OperatingSystem_DEBIAN,
        OperatingSystem_MACOS,
        OperatingSystem_ORACLE_LINUX,
        OperatingSystem_REDHAT_ENTERPRISE_LINUX,
        OperatingSystem_SUSE,
        OperatingSystem_UBUNTU,
        OperatingSystem_WINDOWS
      ),
  )
where

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

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

pattern OperatingSystem_AMAZON_LINUX :: OperatingSystem
pattern $bOperatingSystem_AMAZON_LINUX :: OperatingSystem
$mOperatingSystem_AMAZON_LINUX :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_AMAZON_LINUX = OperatingSystem' "AMAZON_LINUX"

pattern OperatingSystem_AMAZON_LINUX_2 :: OperatingSystem
pattern $bOperatingSystem_AMAZON_LINUX_2 :: OperatingSystem
$mOperatingSystem_AMAZON_LINUX_2 :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_AMAZON_LINUX_2 = OperatingSystem' "AMAZON_LINUX_2"

pattern OperatingSystem_CENTOS :: OperatingSystem
pattern $bOperatingSystem_CENTOS :: OperatingSystem
$mOperatingSystem_CENTOS :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_CENTOS = OperatingSystem' "CENTOS"

pattern OperatingSystem_DEBIAN :: OperatingSystem
pattern $bOperatingSystem_DEBIAN :: OperatingSystem
$mOperatingSystem_DEBIAN :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_DEBIAN = OperatingSystem' "DEBIAN"

pattern OperatingSystem_MACOS :: OperatingSystem
pattern $bOperatingSystem_MACOS :: OperatingSystem
$mOperatingSystem_MACOS :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_MACOS = OperatingSystem' "MACOS"

pattern OperatingSystem_ORACLE_LINUX :: OperatingSystem
pattern $bOperatingSystem_ORACLE_LINUX :: OperatingSystem
$mOperatingSystem_ORACLE_LINUX :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_ORACLE_LINUX = OperatingSystem' "ORACLE_LINUX"

pattern OperatingSystem_REDHAT_ENTERPRISE_LINUX :: OperatingSystem
pattern $bOperatingSystem_REDHAT_ENTERPRISE_LINUX :: OperatingSystem
$mOperatingSystem_REDHAT_ENTERPRISE_LINUX :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_REDHAT_ENTERPRISE_LINUX = OperatingSystem' "REDHAT_ENTERPRISE_LINUX"

pattern OperatingSystem_SUSE :: OperatingSystem
pattern $bOperatingSystem_SUSE :: OperatingSystem
$mOperatingSystem_SUSE :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_SUSE = OperatingSystem' "SUSE"

pattern OperatingSystem_UBUNTU :: OperatingSystem
pattern $bOperatingSystem_UBUNTU :: OperatingSystem
$mOperatingSystem_UBUNTU :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_UBUNTU = OperatingSystem' "UBUNTU"

pattern OperatingSystem_WINDOWS :: OperatingSystem
pattern $bOperatingSystem_WINDOWS :: OperatingSystem
$mOperatingSystem_WINDOWS :: forall r. OperatingSystem -> (Void# -> r) -> (Void# -> r) -> r
OperatingSystem_WINDOWS = OperatingSystem' "WINDOWS"

{-# COMPLETE
  OperatingSystem_AMAZON_LINUX,
  OperatingSystem_AMAZON_LINUX_2,
  OperatingSystem_CENTOS,
  OperatingSystem_DEBIAN,
  OperatingSystem_MACOS,
  OperatingSystem_ORACLE_LINUX,
  OperatingSystem_REDHAT_ENTERPRISE_LINUX,
  OperatingSystem_SUSE,
  OperatingSystem_UBUNTU,
  OperatingSystem_WINDOWS,
  OperatingSystem'
  #-}