#if __GLASGOW_HASKELL__ >= 702
#endif
#if __GLASGOW_HASKELL__ >= 706
#endif
module Data.Proxied (
proxied
#if MIN_VERSION_base(4,7,0)
, proxyHashed
#endif
, unproxied
, module Data.Proxy
, bitSizeProxied
, isSignedProxied
#if MIN_VERSION_base(4,7,0)
, bitSizeMaybeProxied
, finiteBitSizeProxied
#endif
, dataTypeOfProxied
, typeOfProxied
, sizeOfProxied
, alignmentProxied
, datatypeNameProxied
, moduleNameProxied
#if MIN_VERSION_base(4,7,0)
, isNewtypeProxied
#endif
#if MIN_VERSION_base(4,9,0)
, packageNameProxied
#endif
, conNameProxied
, conFixityProxied
, conIsRecordProxied
, selNameProxied
#if MIN_VERSION_base(4,9,0)
, selSourceUnpackednessProxied
, selSourceStrictnessProxied
, selDecidedStrictnessProxied
#endif
, floatRadixProxied
, floatDigitsProxied
, floatRangeProxied
#if MIN_VERSION_base(4,7,0)
, parseFormatProxied
#endif
) where
import Data.Bits (Bits(..))
import Data.Data hiding (Fixity)
import Data.Proxy
import Foreign.Storable (Storable(..))
#if MIN_VERSION_base(4,6,0)
import GHC.Generics
#else
import Generics.Deriving.Base
import Generics.Deriving.Instances ()
#endif
#if MIN_VERSION_base(4,7,0)
import Data.Bits (FiniteBits(..))
import GHC.Exts (Proxy#)
import Text.Printf (PrintfArg(..), ModifierParser)
#endif
proxied :: forall proxy a b. (a -> b) -> proxy a -> b
proxied f _ = f undefined
#if MIN_VERSION_base(4,7,0)
proxyHashed :: forall a b. (a -> b) -> Proxy# a -> b
proxyHashed f _ = f undefined
#endif
unproxied :: forall a b. (Proxy a -> b) -> a -> b
unproxied f _ = f Proxy
bitSizeProxied :: forall proxy a. Bits a => proxy a -> Int
bitSizeProxied = proxied bitSize
isSignedProxied :: forall proxy a. Bits a => proxy a -> Bool
isSignedProxied = proxied isSigned
#if MIN_VERSION_base(4,7,0)
bitSizeMaybeProxied :: forall proxy a. Bits a => proxy a -> Maybe Int
bitSizeMaybeProxied = proxied bitSizeMaybe
finiteBitSizeProxied :: forall proxy a. FiniteBits a => proxy a -> Int
finiteBitSizeProxied = proxied finiteBitSize
#endif
dataTypeOfProxied :: forall proxy a. Data a => proxy a -> DataType
dataTypeOfProxied = proxied dataTypeOf
typeOfProxied :: forall proxy
#if MIN_VERSION_base(4,7,0)
(a :: k)
#else
a
#endif
. Typeable a => proxy a -> TypeRep
#if MIN_VERSION_base(4,7,0)
typeOfProxied = typeRep
#else
typeOfProxied = proxied typeOf
#endif
sizeOfProxied :: forall proxy a. Storable a => proxy a -> Int
sizeOfProxied = proxied sizeOf
alignmentProxied :: forall proxy a. Storable a => proxy a -> Int
alignmentProxied = proxied alignment
#define GENERIC_FORALL(t,letter) forall proxy T_TYPE(t) letter f a
#if MIN_VERSION_base(4,10,0)
# define T_TYPE(t) (t :: k1 -> (k2 -> *) -> k2 -> *)
#elif MIN_VERSION_base(4,9,0)
# define T_TYPE(t) (t :: k1 -> (* -> *) -> k2 -> *)
#else
# define T_TYPE(t) (t :: * -> (* -> *) -> * -> *)
#endif
datatypeNameProxied :: GENERIC_FORALL(t,d). Datatype d
=> proxy (T_TYPE(t) d f a)
-> [Char]
datatypeNameProxied = proxied datatypeName
moduleNameProxied :: GENERIC_FORALL(t,d). Datatype d
=> proxy (T_TYPE(t) d f a)
-> [Char]
moduleNameProxied = proxied moduleName
#if MIN_VERSION_base(4,7,0)
isNewtypeProxied :: GENERIC_FORALL(t,d). Datatype d
=> proxy (T_TYPE(t) d f a)
-> Bool
isNewtypeProxied = proxied isNewtype
#endif
#if MIN_VERSION_base(4,9,0)
packageNameProxied :: GENERIC_FORALL(t,d). Datatype d
=> proxy (T_TYPE(t) d f a)
-> [Char]
packageNameProxied = proxied packageName
#endif
conNameProxied :: GENERIC_FORALL(t,c). Constructor c
=> proxy (T_TYPE(t) c f a)
-> [Char]
conNameProxied = proxied conName
conFixityProxied :: GENERIC_FORALL(t,c). Constructor c
=> proxy (T_TYPE(t) c f a)
-> Fixity
conFixityProxied = proxied conFixity
conIsRecordProxied :: GENERIC_FORALL(t,c). Constructor c
=> proxy (T_TYPE(t) c f a)
-> Bool
conIsRecordProxied = proxied conIsRecord
selNameProxied :: GENERIC_FORALL(t,s). Selector s
=> proxy (T_TYPE(t) s f a)
-> [Char]
selNameProxied = proxied selName
#if MIN_VERSION_base(4,9,0)
selSourceUnpackednessProxied :: GENERIC_FORALL(t,s). Selector s
=> proxy (T_TYPE(t) s f a)
-> SourceUnpackedness
selSourceUnpackednessProxied = proxied selSourceUnpackedness
selSourceStrictnessProxied :: GENERIC_FORALL(t,s). Selector s
=> proxy (T_TYPE(t) s f a)
-> SourceStrictness
selSourceStrictnessProxied = proxied selSourceStrictness
selDecidedStrictnessProxied :: GENERIC_FORALL(t,s). Selector s
=> proxy (T_TYPE(t) s f a)
-> DecidedStrictness
selDecidedStrictnessProxied = proxied selDecidedStrictness
#endif
floatRadixProxied :: forall proxy a. RealFloat a => proxy a -> Integer
floatRadixProxied = proxied floatRadix
floatDigitsProxied :: forall proxy a. RealFloat a => proxy a -> Int
floatDigitsProxied = proxied floatDigits
floatRangeProxied :: forall proxy a. RealFloat a => proxy a -> (Int, Int)
floatRangeProxied = proxied floatRange
#if MIN_VERSION_base(4,7,0)
parseFormatProxied :: forall proxy a. PrintfArg a => proxy a -> ModifierParser
parseFormatProxied = proxied parseFormat
#endif