{-# 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.CustomerProfiles.Types.Gender
-- 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.CustomerProfiles.Types.Gender
  ( Gender
      ( ..,
        Gender_FEMALE,
        Gender_MALE,
        Gender_UNSPECIFIED
      ),
  )
where

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

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

pattern Gender_FEMALE :: Gender
pattern $bGender_FEMALE :: Gender
$mGender_FEMALE :: forall r. Gender -> (Void# -> r) -> (Void# -> r) -> r
Gender_FEMALE = Gender' "FEMALE"

pattern Gender_MALE :: Gender
pattern $bGender_MALE :: Gender
$mGender_MALE :: forall r. Gender -> (Void# -> r) -> (Void# -> r) -> r
Gender_MALE = Gender' "MALE"

pattern Gender_UNSPECIFIED :: Gender
pattern $bGender_UNSPECIFIED :: Gender
$mGender_UNSPECIFIED :: forall r. Gender -> (Void# -> r) -> (Void# -> r) -> r
Gender_UNSPECIFIED = Gender' "UNSPECIFIED"

{-# COMPLETE
  Gender_FEMALE,
  Gender_MALE,
  Gender_UNSPECIFIED,
  Gender'
  #-}