packages feed

large-records-0.2.0.0: src/Data/Record/Internal/Plugin/Names/Runtime.hs

-- | Names of all everything used by the generated code
--
-- This follows the structure of "Data.Record.Plugin.Runtime".
module Data.Record.Internal.Plugin.Names.Runtime (
    -- * base
    type_Any
  , type_Constraint
  , type_Eq
  , type_Int
  , type_Ord
  , type_Proxy
  , type_Show
  , type_Type
  , con_Proxy
  , unq_compare
  , unq_eq
  , unq_showsPrec
  , error
  , unsafeCoerce
    -- * vector
  , type_Vector
  , fromList
  , toList
  , unsafeIndex
  , unsafeUpd
    -- * record-hasfield
  , type_HasField
  , unq_hasField
    -- * large-generics
  , type_Dict
  , type_Generic
  , type_Rep
  , type_ThroughLRGenerics
  , unq_type_Constraints
  , unq_type_MetadataOf
  , con_FieldLazy
  , con_FieldMetadata
  , con_FieldStrict
  , con_Metadata
  , con_Rep
  , con_WrapThroughLRGenerics
  , unq_from
  , unq_to
  , unq_dict
  , unq_metadata
  , gcompare
  , geq
  , gshowsPrec
  , noInlineUnsafeCo
  , recordConstructor
  , recordFieldMetadata
  , recordName
  , recordSize
  , unwrapThroughLRGenerics
    -- * Auxiliary
  , dictFor
  , repFromVector
  , repToVector
  ) where

import Prelude hiding (error, showsPrec, compare)

import Data.Record.Internal.GHC.Shim

{-------------------------------------------------------------------------------
  base
-------------------------------------------------------------------------------}

type_Any        :: LRdrName
type_Constraint :: LRdrName
type_Eq         :: LRdrName
type_Int        :: LRdrName
type_Ord        :: LRdrName
type_Proxy      :: LRdrName
type_Show       :: LRdrName
type_Type       :: LRdrName

type_Any        = nameQT "Any"
type_Constraint = nameQT "Constraint"
type_Eq         = nameQT "Eq"
type_Int        = nameQT "Int"
type_Ord        = nameQT "Ord"
type_Proxy      = nameQT "Proxy"
type_Show       = nameQT "Show"
type_Type       = nameQT "Type"

con_Proxy :: LRdrName
con_Proxy = nameQC "Proxy"

error        :: LRdrName
unsafeCoerce :: LRdrName

error        = nameQV "error"
unsafeCoerce = nameQV "unsafeCoerce"

unq_compare   :: LRdrName
unq_eq        :: LRdrName
unq_showsPrec :: LRdrName

unq_compare   = nameUV "compare"
unq_eq        = nameUV "=="
unq_showsPrec = nameUV "showsPrec"

{-------------------------------------------------------------------------------
  vector
-------------------------------------------------------------------------------}

type_Vector :: LRdrName
type_Vector = nameQT "Vector"

fromList    :: LRdrName
toList      :: LRdrName
unsafeIndex :: LRdrName
unsafeUpd   :: LRdrName

fromList    = nameQV "fromList"
toList      = nameQV "toList"
unsafeIndex = nameQV "unsafeIndex"
unsafeUpd   = nameQV "unsafeUpd"

{-------------------------------------------------------------------------------
  record-hasfield
-------------------------------------------------------------------------------}

type_HasField :: LRdrName
type_HasField = nameQT "HasField"

unq_hasField :: LRdrName
unq_hasField = nameUV "hasField"

{-------------------------------------------------------------------------------
  large-generics
-------------------------------------------------------------------------------}

type_Dict              :: LRdrName
type_Generic           :: LRdrName
type_Rep               :: LRdrName
type_ThroughLRGenerics :: LRdrName

type_Dict              = nameQT "Dict"
type_Generic           = nameQT "Generic"
type_Rep               = nameQT "Rep"
type_ThroughLRGenerics = nameQT "ThroughLRGenerics"

unq_type_MetadataOf :: LRdrName
unq_type_Constraints :: LRdrName

unq_type_Constraints = nameUT "Constraints"
unq_type_MetadataOf  = nameUT "MetadataOf"

con_FieldLazy             :: LRdrName
con_FieldMetadata         :: LRdrName
con_FieldStrict           :: LRdrName
con_Metadata              :: LRdrName
con_Rep                   :: LRdrName
con_WrapThroughLRGenerics :: LRdrName

con_FieldLazy             = nameQC "FieldLazy"
con_FieldMetadata         = nameQC "FieldMetadata"
con_FieldStrict           = nameQC "FieldStrict"
con_Metadata              = nameQC "Metadata"
con_Rep                   = nameQC "Rep"
con_WrapThroughLRGenerics = nameQC "WrapThroughLRGenerics"

unq_from     :: LRdrName
unq_to       :: LRdrName
unq_dict     :: LRdrName
unq_metadata :: LRdrName

unq_from     = nameUV "from"
unq_to       = nameUV "to"
unq_dict     = nameUV "dict"
unq_metadata = nameUV "metadata"

gcompare                :: LRdrName
geq                     :: LRdrName
gshowsPrec              :: LRdrName
noInlineUnsafeCo        :: LRdrName
recordConstructor       :: LRdrName
recordFieldMetadata     :: LRdrName
recordName              :: LRdrName
recordSize              :: LRdrName
unwrapThroughLRGenerics :: LRdrName

gcompare                = nameQV "gcompare"
geq                     = nameQV "geq"
gshowsPrec              = nameQV "gshowsPrec"
noInlineUnsafeCo        = nameQV "noInlineUnsafeCo"
recordConstructor       = nameQV "recordConstructor"
recordFieldMetadata     = nameQV "recordFieldMetadata"
recordName              = nameQV "recordName"
recordSize              = nameQV "recordSize"
unwrapThroughLRGenerics = nameQV "unwrapThroughLRGenerics"

{-------------------------------------------------------------------------------
  Auxiliary
-------------------------------------------------------------------------------}

dictFor       :: LRdrName
repFromVector :: LRdrName
repToVector   :: LRdrName

dictFor       = nameQV "dictFor"
repFromVector = nameQV "repFromVector"
repToVector   = nameQV "repToVector"

{-------------------------------------------------------------------------------
  Internal auxiliary

  NOTE: Unqualified names are used when generating class instances.
-------------------------------------------------------------------------------}

runtime :: ModuleName
runtime = mkModuleName "Data.Record.Plugin.Runtime"

nameQV, nameQT, nameQC :: String -> LRdrName
nameQV var = noLoc $ mkRdrQual runtime $ mkVarOcc  var
nameQT var = noLoc $ mkRdrQual runtime $ mkTcOcc   var
nameQC var = noLoc $ mkRdrQual runtime $ mkDataOcc var

nameUV, nameUT :: String -> LRdrName
nameUV var = noLoc $ mkRdrUnqual $ mkVarOcc var
nameUT var = noLoc $ mkRdrUnqual $ mkTcOcc  var