{- ORMOLU_DISABLE -}
{- HLINT ignore -}
-- THIS IS A GENERATED FILE, DO NOT EDIT

{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -Wno-unused-matches #-}
{-# OPTIONS_GHC -Wno-deprecations #-}
module Language.LSP.Protocol.Internal.Types.PositionEncodingKind where

import Control.DeepSeq
import Data.Hashable
import GHC.Generics
import Language.LSP.Protocol.Utils.Misc
import Prettyprinter
import qualified Data.Aeson as Aeson
import qualified Data.Row.Aeson as Aeson
import qualified Data.Row.Hashable as Hashable
import qualified Data.Set
import qualified Data.String
import qualified Data.Text
import qualified Language.LSP.Protocol.Types.LspEnum

{-|
A set of predefined position encoding kinds.

@since 3.17.0
-}
data PositionEncodingKind = 
    {-|
  Character offsets count UTF-8 code units.
  -}
  PositionEncodingKind_UTF8
  | {-|
  Character offsets count UTF-16 code units.

  This is the default and must always be supported
  by servers
  -}
  PositionEncodingKind_UTF16
  | {-|
  Character offsets count UTF-32 code units.

  Implementation note: these are the same as Unicode code points,
  so this `PositionEncodingKind` may also be used for an
  encoding-agnostic representation of character offsets.
  -}
  PositionEncodingKind_UTF32
  | PositionEncodingKind_Custom Data.Text.Text
  deriving stock (Int -> PositionEncodingKind -> ShowS
[PositionEncodingKind] -> ShowS
PositionEncodingKind -> String
(Int -> PositionEncodingKind -> ShowS)
-> (PositionEncodingKind -> String)
-> ([PositionEncodingKind] -> ShowS)
-> Show PositionEncodingKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PositionEncodingKind -> ShowS
showsPrec :: Int -> PositionEncodingKind -> ShowS
$cshow :: PositionEncodingKind -> String
show :: PositionEncodingKind -> String
$cshowList :: [PositionEncodingKind] -> ShowS
showList :: [PositionEncodingKind] -> ShowS
Show, PositionEncodingKind -> PositionEncodingKind -> Bool
(PositionEncodingKind -> PositionEncodingKind -> Bool)
-> (PositionEncodingKind -> PositionEncodingKind -> Bool)
-> Eq PositionEncodingKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PositionEncodingKind -> PositionEncodingKind -> Bool
== :: PositionEncodingKind -> PositionEncodingKind -> Bool
$c/= :: PositionEncodingKind -> PositionEncodingKind -> Bool
/= :: PositionEncodingKind -> PositionEncodingKind -> Bool
Eq, Eq PositionEncodingKind
Eq PositionEncodingKind =>
(PositionEncodingKind -> PositionEncodingKind -> Ordering)
-> (PositionEncodingKind -> PositionEncodingKind -> Bool)
-> (PositionEncodingKind -> PositionEncodingKind -> Bool)
-> (PositionEncodingKind -> PositionEncodingKind -> Bool)
-> (PositionEncodingKind -> PositionEncodingKind -> Bool)
-> (PositionEncodingKind
    -> PositionEncodingKind -> PositionEncodingKind)
-> (PositionEncodingKind
    -> PositionEncodingKind -> PositionEncodingKind)
-> Ord PositionEncodingKind
PositionEncodingKind -> PositionEncodingKind -> Bool
PositionEncodingKind -> PositionEncodingKind -> Ordering
PositionEncodingKind
-> PositionEncodingKind -> PositionEncodingKind
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
$ccompare :: PositionEncodingKind -> PositionEncodingKind -> Ordering
compare :: PositionEncodingKind -> PositionEncodingKind -> Ordering
$c< :: PositionEncodingKind -> PositionEncodingKind -> Bool
< :: PositionEncodingKind -> PositionEncodingKind -> Bool
$c<= :: PositionEncodingKind -> PositionEncodingKind -> Bool
<= :: PositionEncodingKind -> PositionEncodingKind -> Bool
$c> :: PositionEncodingKind -> PositionEncodingKind -> Bool
> :: PositionEncodingKind -> PositionEncodingKind -> Bool
$c>= :: PositionEncodingKind -> PositionEncodingKind -> Bool
>= :: PositionEncodingKind -> PositionEncodingKind -> Bool
$cmax :: PositionEncodingKind
-> PositionEncodingKind -> PositionEncodingKind
max :: PositionEncodingKind
-> PositionEncodingKind -> PositionEncodingKind
$cmin :: PositionEncodingKind
-> PositionEncodingKind -> PositionEncodingKind
min :: PositionEncodingKind
-> PositionEncodingKind -> PositionEncodingKind
Ord, (forall x. PositionEncodingKind -> Rep PositionEncodingKind x)
-> (forall x. Rep PositionEncodingKind x -> PositionEncodingKind)
-> Generic PositionEncodingKind
forall x. Rep PositionEncodingKind x -> PositionEncodingKind
forall x. PositionEncodingKind -> Rep PositionEncodingKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PositionEncodingKind -> Rep PositionEncodingKind x
from :: forall x. PositionEncodingKind -> Rep PositionEncodingKind x
$cto :: forall x. Rep PositionEncodingKind x -> PositionEncodingKind
to :: forall x. Rep PositionEncodingKind x -> PositionEncodingKind
Generic)
  deriving anyclass (PositionEncodingKind -> ()
(PositionEncodingKind -> ()) -> NFData PositionEncodingKind
forall a. (a -> ()) -> NFData a
$crnf :: PositionEncodingKind -> ()
rnf :: PositionEncodingKind -> ()
NFData, Eq PositionEncodingKind
Eq PositionEncodingKind =>
(Int -> PositionEncodingKind -> Int)
-> (PositionEncodingKind -> Int) -> Hashable PositionEncodingKind
Int -> PositionEncodingKind -> Int
PositionEncodingKind -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> PositionEncodingKind -> Int
hashWithSalt :: Int -> PositionEncodingKind -> Int
$chash :: PositionEncodingKind -> Int
hash :: PositionEncodingKind -> Int
Hashable)
  deriving ( [PositionEncodingKind] -> Value
[PositionEncodingKind] -> Encoding
PositionEncodingKind -> Bool
PositionEncodingKind -> Value
PositionEncodingKind -> Encoding
(PositionEncodingKind -> Value)
-> (PositionEncodingKind -> Encoding)
-> ([PositionEncodingKind] -> Value)
-> ([PositionEncodingKind] -> Encoding)
-> (PositionEncodingKind -> Bool)
-> ToJSON PositionEncodingKind
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: PositionEncodingKind -> Value
toJSON :: PositionEncodingKind -> Value
$ctoEncoding :: PositionEncodingKind -> Encoding
toEncoding :: PositionEncodingKind -> Encoding
$ctoJSONList :: [PositionEncodingKind] -> Value
toJSONList :: [PositionEncodingKind] -> Value
$ctoEncodingList :: [PositionEncodingKind] -> Encoding
toEncodingList :: [PositionEncodingKind] -> Encoding
$comitField :: PositionEncodingKind -> Bool
omitField :: PositionEncodingKind -> Bool
Aeson.ToJSON
  , Maybe PositionEncodingKind
Value -> Parser [PositionEncodingKind]
Value -> Parser PositionEncodingKind
(Value -> Parser PositionEncodingKind)
-> (Value -> Parser [PositionEncodingKind])
-> Maybe PositionEncodingKind
-> FromJSON PositionEncodingKind
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser PositionEncodingKind
parseJSON :: Value -> Parser PositionEncodingKind
$cparseJSONList :: Value -> Parser [PositionEncodingKind]
parseJSONList :: Value -> Parser [PositionEncodingKind]
$comittedField :: Maybe PositionEncodingKind
omittedField :: Maybe PositionEncodingKind
Aeson.FromJSON
  , String -> PositionEncodingKind
(String -> PositionEncodingKind) -> IsString PositionEncodingKind
forall a. (String -> a) -> IsString a
$cfromString :: String -> PositionEncodingKind
fromString :: String -> PositionEncodingKind
Data.String.IsString ) via (Language.LSP.Protocol.Types.LspEnum.AsLspEnum PositionEncodingKind)
  deriving (forall ann. PositionEncodingKind -> Doc ann)
-> (forall ann. [PositionEncodingKind] -> Doc ann)
-> Pretty PositionEncodingKind
forall ann. [PositionEncodingKind] -> Doc ann
forall ann. PositionEncodingKind -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. PositionEncodingKind -> Doc ann
pretty :: forall ann. PositionEncodingKind -> Doc ann
$cprettyList :: forall ann. [PositionEncodingKind] -> Doc ann
prettyList :: forall ann. [PositionEncodingKind] -> Doc ann
Pretty via (ViaJSON PositionEncodingKind)

instance Language.LSP.Protocol.Types.LspEnum.LspEnum PositionEncodingKind where
  knownValues :: Set PositionEncodingKind
knownValues = [PositionEncodingKind] -> Set PositionEncodingKind
forall a. Ord a => [a] -> Set a
Data.Set.fromList [PositionEncodingKind
PositionEncodingKind_UTF8
    ,PositionEncodingKind
PositionEncodingKind_UTF16
    ,PositionEncodingKind
PositionEncodingKind_UTF32]
  type EnumBaseType PositionEncodingKind = Data.Text.Text
  toEnumBaseType :: PositionEncodingKind -> EnumBaseType PositionEncodingKind
toEnumBaseType PositionEncodingKind
PositionEncodingKind_UTF8 = Text
EnumBaseType PositionEncodingKind
"utf-8"
  toEnumBaseType PositionEncodingKind
PositionEncodingKind_UTF16 = Text
EnumBaseType PositionEncodingKind
"utf-16"
  toEnumBaseType PositionEncodingKind
PositionEncodingKind_UTF32 = Text
EnumBaseType PositionEncodingKind
"utf-32"
  toEnumBaseType (PositionEncodingKind_Custom Text
arg) = Text
EnumBaseType PositionEncodingKind
arg

instance Language.LSP.Protocol.Types.LspEnum.LspOpenEnum PositionEncodingKind where
  fromOpenEnumBaseType :: EnumBaseType PositionEncodingKind -> PositionEncodingKind
fromOpenEnumBaseType EnumBaseType PositionEncodingKind
"utf-8" = PositionEncodingKind
PositionEncodingKind_UTF8
  fromOpenEnumBaseType EnumBaseType PositionEncodingKind
"utf-16" = PositionEncodingKind
PositionEncodingKind_UTF16
  fromOpenEnumBaseType EnumBaseType PositionEncodingKind
"utf-32" = PositionEncodingKind
PositionEncodingKind_UTF32
  fromOpenEnumBaseType EnumBaseType PositionEncodingKind
arg = Text -> PositionEncodingKind
PositionEncodingKind_Custom Text
EnumBaseType PositionEncodingKind
arg