{-# 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.Panorama.Types.NodeCategory
-- 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.Panorama.Types.NodeCategory
  ( NodeCategory
      ( ..,
        NodeCategory_BUSINESS_LOGIC,
        NodeCategory_MEDIA_SINK,
        NodeCategory_MEDIA_SOURCE,
        NodeCategory_ML_MODEL
      ),
  )
where

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

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

pattern NodeCategory_BUSINESS_LOGIC :: NodeCategory
pattern $bNodeCategory_BUSINESS_LOGIC :: NodeCategory
$mNodeCategory_BUSINESS_LOGIC :: forall r. NodeCategory -> (Void# -> r) -> (Void# -> r) -> r
NodeCategory_BUSINESS_LOGIC = NodeCategory' "BUSINESS_LOGIC"

pattern NodeCategory_MEDIA_SINK :: NodeCategory
pattern $bNodeCategory_MEDIA_SINK :: NodeCategory
$mNodeCategory_MEDIA_SINK :: forall r. NodeCategory -> (Void# -> r) -> (Void# -> r) -> r
NodeCategory_MEDIA_SINK = NodeCategory' "MEDIA_SINK"

pattern NodeCategory_MEDIA_SOURCE :: NodeCategory
pattern $bNodeCategory_MEDIA_SOURCE :: NodeCategory
$mNodeCategory_MEDIA_SOURCE :: forall r. NodeCategory -> (Void# -> r) -> (Void# -> r) -> r
NodeCategory_MEDIA_SOURCE = NodeCategory' "MEDIA_SOURCE"

pattern NodeCategory_ML_MODEL :: NodeCategory
pattern $bNodeCategory_ML_MODEL :: NodeCategory
$mNodeCategory_ML_MODEL :: forall r. NodeCategory -> (Void# -> r) -> (Void# -> r) -> r
NodeCategory_ML_MODEL = NodeCategory' "ML_MODEL"

{-# COMPLETE
  NodeCategory_BUSINESS_LOGIC,
  NodeCategory_MEDIA_SINK,
  NodeCategory_MEDIA_SOURCE,
  NodeCategory_ML_MODEL,
  NodeCategory'
  #-}