Movatterモバイル変換


[0]ホーム

URL:


base-4.12.0.0: Basic libraries

Copyright(c) The FFI task force 2001
LicenseBSD-style (see the file libraries/base/LICENSE)
Maintainerffi@haskell.org
Stabilityprovisional
Portabilityportable
Safe HaskellTrustworthy
LanguageHaskell2010

Foreign.Ptr

Contents

Description

This module provides typed pointers to foreign data. It is part of the Foreign Function Interface (FFI) and will normally be imported via theForeign module.

Synopsis

Data pointers

dataPtr aSource#

A value of typePtr a represents a pointer to an object, or an array of objects, which may be marshalled to or from Haskell values of typea.

The typea will often be an instance of classStorable which provides the marshalling operations. However this is not essential, and you can provide your own operations to access the pointer. For example you might write small foreign functions to get or set the fields of a Cstruct.

Instances
Generic1 (URec (Ptr ()) :: k ->Type)Source# 
Instance details

Defined inGHC.Generics

Associated Types

typeRep1 (URec (Ptr ())) :: k ->TypeSource#

Methods

from1 ::URec (Ptr ()) a ->Rep1 (URec (Ptr ())) aSource#

to1 ::Rep1 (URec (Ptr ())) a ->URec (Ptr ()) aSource#

Eq (Ptr a)Source#

Since: 2.1

Instance details

Defined inGHC.Ptr

Methods

(==) ::Ptr a ->Ptr a ->Bool#

(/=) ::Ptr a ->Ptr a ->Bool#

Data a =>Data (Ptr a)Source#

Since: 4.8.0.0

Instance details

Defined inData.Data

Methods

gfoldl :: (forall d b.Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) ->Ptr a -> c (Ptr a)Source#

gunfold :: (forall b r.Data b => c (b -> r) -> c r) -> (forall r. r -> c r) ->Constr -> c (Ptr a)Source#

toConstr ::Ptr a ->ConstrSource#

dataTypeOf ::Ptr a ->DataTypeSource#

dataCast1 ::Typeable t => (forall d.Data d => c (t d)) ->Maybe (c (Ptr a))Source#

dataCast2 ::Typeable t => (forall d e. (Data d,Data e) => c (t d e)) ->Maybe (c (Ptr a))Source#

gmapT :: (forall b.Data b => b -> b) ->Ptr a ->Ptr aSource#

gmapQl :: (r -> r' -> r) -> r -> (forall d.Data d => d -> r') ->Ptr a -> rSource#

gmapQr :: (r' -> r -> r) -> r -> (forall d.Data d => d -> r') ->Ptr a -> rSource#

gmapQ :: (forall d.Data d => d -> u) ->Ptr a -> [u]Source#

gmapQi ::Int -> (forall d.Data d => d -> u) ->Ptr a -> uSource#

gmapM ::Monad m => (forall d.Data d => d -> m d) ->Ptr a -> m (Ptr a)Source#

gmapMp ::MonadPlus m => (forall d.Data d => d -> m d) ->Ptr a -> m (Ptr a)Source#

gmapMo ::MonadPlus m => (forall d.Data d => d -> m d) ->Ptr a -> m (Ptr a)Source#

Ord (Ptr a)Source#

Since: 2.1

Instance details

Defined inGHC.Ptr

Methods

compare ::Ptr a ->Ptr a ->Ordering#

(<) ::Ptr a ->Ptr a ->Bool#

(<=) ::Ptr a ->Ptr a ->Bool#

(>) ::Ptr a ->Ptr a ->Bool#

(>=) ::Ptr a ->Ptr a ->Bool#

max ::Ptr a ->Ptr a ->Ptr a#

min ::Ptr a ->Ptr a ->Ptr a#

Show (Ptr a)Source#

Since: 2.1

Instance details

Defined inGHC.Ptr

Storable (Ptr a)Source#

Since: 2.1

Instance details

Defined inForeign.Storable

Functor (URec (Ptr ()) ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inGHC.Generics

Methods

fmap :: (a -> b) ->URec (Ptr ()) a ->URec (Ptr ()) bSource#

(<$) :: a ->URec (Ptr ()) b ->URec (Ptr ()) aSource#

Foldable (URec (Ptr ()) ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Foldable

Methods

fold ::Monoid m =>URec (Ptr ()) m -> mSource#

foldMap ::Monoid m => (a -> m) ->URec (Ptr ()) a -> mSource#

foldr :: (a -> b -> b) -> b ->URec (Ptr ()) a -> bSource#

foldr' :: (a -> b -> b) -> b ->URec (Ptr ()) a -> bSource#

foldl :: (b -> a -> b) -> b ->URec (Ptr ()) a -> bSource#

foldl' :: (b -> a -> b) -> b ->URec (Ptr ()) a -> bSource#

foldr1 :: (a -> a -> a) ->URec (Ptr ()) a -> aSource#

foldl1 :: (a -> a -> a) ->URec (Ptr ()) a -> aSource#

toList ::URec (Ptr ()) a -> [a]Source#

null ::URec (Ptr ()) a ->BoolSource#

length ::URec (Ptr ()) a ->IntSource#

elem ::Eq a => a ->URec (Ptr ()) a ->BoolSource#

maximum ::Ord a =>URec (Ptr ()) a -> aSource#

minimum ::Ord a =>URec (Ptr ()) a -> aSource#

sum ::Num a =>URec (Ptr ()) a -> aSource#

product ::Num a =>URec (Ptr ()) a -> aSource#

Traversable (URec (Ptr ()) ::Type ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inData.Traversable

Methods

traverse ::Applicative f => (a -> f b) ->URec (Ptr ()) a -> f (URec (Ptr ()) b)Source#

sequenceA ::Applicative f =>URec (Ptr ()) (f a) -> f (URec (Ptr ()) a)Source#

mapM ::Monad m => (a -> m b) ->URec (Ptr ()) a -> m (URec (Ptr ()) b)Source#

sequence ::Monad m =>URec (Ptr ()) (m a) -> m (URec (Ptr ()) a)Source#

Eq (URec (Ptr ()) p)Source#

Since: 4.9.0.0

Instance details

Defined inGHC.Generics

Methods

(==) ::URec (Ptr ()) p ->URec (Ptr ()) p ->Bool#

(/=) ::URec (Ptr ()) p ->URec (Ptr ()) p ->Bool#

Ord (URec (Ptr ()) p)Source#

Since: 4.9.0.0

Instance details

Defined inGHC.Generics

Methods

compare ::URec (Ptr ()) p ->URec (Ptr ()) p ->Ordering#

(<) ::URec (Ptr ()) p ->URec (Ptr ()) p ->Bool#

(<=) ::URec (Ptr ()) p ->URec (Ptr ()) p ->Bool#

(>) ::URec (Ptr ()) p ->URec (Ptr ()) p ->Bool#

(>=) ::URec (Ptr ()) p ->URec (Ptr ()) p ->Bool#

max ::URec (Ptr ()) p ->URec (Ptr ()) p ->URec (Ptr ()) p#

min ::URec (Ptr ()) p ->URec (Ptr ()) p ->URec (Ptr ()) p#

Generic (URec (Ptr ()) p)Source# 
Instance details

Defined inGHC.Generics

Associated Types

typeRep (URec (Ptr ()) p) ::Type ->TypeSource#

Methods

from ::URec (Ptr ()) p ->Rep (URec (Ptr ()) p) xSource#

to ::Rep (URec (Ptr ()) p) x ->URec (Ptr ()) pSource#

dataURec (Ptr ()) (p :: k)Source#

Used for marking occurrences ofAddr#

Since: 4.9.0.0

Instance details

Defined inGHC.Generics

dataURec (Ptr ()) (p :: k) =UAddr {}
typeRep1 (URec (Ptr ()) :: k ->Type)Source#

Since: 4.9.0.0

Instance details

Defined inGHC.Generics

typeRep1 (URec (Ptr ()) :: k ->Type) =D1 (MetaData "URec" "GHC.Generics" "base"False) (C1 (MetaCons "UAddr"PrefixITrue) (S1 (MetaSel (Just "uAddr#")NoSourceUnpackednessNoSourceStrictnessDecidedLazy) (UAddr :: k ->Type)))
typeRep (URec (Ptr ()) p)Source#

Since: 4.9.0.0

Instance details

Defined inGHC.Generics

typeRep (URec (Ptr ()) p) =D1 (MetaData "URec" "GHC.Generics" "base"False) (C1 (MetaCons "UAddr"PrefixITrue) (S1 (MetaSel (Just "uAddr#")NoSourceUnpackednessNoSourceStrictnessDecidedLazy) (UAddr ::Type ->Type)))

nullPtr ::Ptr aSource#

The constantnullPtr contains a distinguished value ofPtr that is not associated with a valid memory location.

castPtr ::Ptr a ->Ptr bSource#

ThecastPtr function casts a pointer from one type to another.

plusPtr ::Ptr a ->Int ->Ptr bSource#

Advances the given address by the given offset in bytes.

alignPtr ::Ptr a ->Int ->Ptr aSource#

Given an arbitrary address and an alignment constraint,alignPtr yields the next higher address that fulfills the alignment constraint. An alignment constraintx is fulfilled by any address divisible byx. This operation is idempotent.

minusPtr ::Ptr a ->Ptr b ->IntSource#

Computes the offset required to get from the second to the first argument. We have

p2 == p1 `plusPtr` (p2 `minusPtr` p1)

Function pointers

dataFunPtr aSource#

A value of typeFunPtr a is a pointer to a function callable from foreign code. The typea will normally be aforeign type, a function type with zero or more arguments where

A value of typeFunPtr a may be a pointer to a foreign function, either returned by another foreign function or imported with a a static address import like

foreign import ccall "stdlib.h &free"  p_free :: FunPtr (Ptr a -> IO ())

or a pointer to a Haskell function created using awrapper stub declared to produce aFunPtr of the correct type. For example:

type Compare = Int -> Int -> Boolforeign import ccall "wrapper"  mkCompare :: Compare -> IO (FunPtr Compare)

Calls to wrapper stubs likemkCompare allocate storage, which should be released withfreeHaskellFunPtr when no longer required.

To convertFunPtr values to corresponding Haskell functions, one can define adynamic stub for the specific foreign type, e.g.

type IntFunction = CInt -> IO ()foreign import ccall "dynamic"  mkFun :: FunPtr IntFunction -> IntFunction
Instances
Eq (FunPtr a)Source# 
Instance details

Defined inGHC.Ptr

Methods

(==) ::FunPtr a ->FunPtr a ->Bool#

(/=) ::FunPtr a ->FunPtr a ->Bool#

Ord (FunPtr a)Source# 
Instance details

Defined inGHC.Ptr

Show (FunPtr a)Source#

Since: 2.1

Instance details

Defined inGHC.Ptr

Storable (FunPtr a)Source#

Since: 2.1

Instance details

Defined inForeign.Storable

nullFunPtr ::FunPtr aSource#

The constantnullFunPtr contains a distinguished value ofFunPtr that is not associated with a valid memory location.

castFunPtr ::FunPtr a ->FunPtr bSource#

Casts aFunPtr to aFunPtr of a different type.

castFunPtrToPtr ::FunPtr a ->Ptr bSource#

Casts aFunPtr to aPtr.

Note: this is valid only on architectures where data and function pointers range over the same set of addresses, and should only be used for bindings to external libraries whose interface already relies on this assumption.

castPtrToFunPtr ::Ptr a ->FunPtr bSource#

Casts aPtr to aFunPtr.

Note: this is valid only on architectures where data and function pointers range over the same set of addresses, and should only be used for bindings to external libraries whose interface already relies on this assumption.

freeHaskellFunPtr ::FunPtr a ->IO ()Source#

Release the storage associated with the givenFunPtr, which must have been obtained from a wrapper stub. This should be called whenever the return value from a foreign import wrapper function is no longer required; otherwise, the storage it uses will leak.

Integral types with lossless conversion to and from pointers

newtypeIntPtrSource#

A signed integral type that can be losslessly converted to and fromPtr. This type is also compatible with the C99 typeintptr_t, and can be marshalled to and from that type safely.

Constructors

IntPtrInt 
Instances
BoundedIntPtrSource# 
Instance details

Defined inForeign.Ptr

EnumIntPtrSource# 
Instance details

Defined inForeign.Ptr

EqIntPtrSource# 
Instance details

Defined inForeign.Ptr

IntegralIntPtrSource# 
Instance details

Defined inForeign.Ptr

DataIntPtrSource#

Since: 4.11.0.0

Instance details

Defined inData.Data

Methods

gfoldl :: (forall d b.Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) ->IntPtr -> cIntPtrSource#

gunfold :: (forall b r.Data b => c (b -> r) -> c r) -> (forall r. r -> c r) ->Constr -> cIntPtrSource#

toConstr ::IntPtr ->ConstrSource#

dataTypeOf ::IntPtr ->DataTypeSource#

dataCast1 ::Typeable t => (forall d.Data d => c (t d)) ->Maybe (cIntPtr)Source#

dataCast2 ::Typeable t => (forall d e. (Data d,Data e) => c (t d e)) ->Maybe (cIntPtr)Source#

gmapT :: (forall b.Data b => b -> b) ->IntPtr ->IntPtrSource#

gmapQl :: (r -> r' -> r) -> r -> (forall d.Data d => d -> r') ->IntPtr -> rSource#

gmapQr :: (r' -> r -> r) -> r -> (forall d.Data d => d -> r') ->IntPtr -> rSource#

gmapQ :: (forall d.Data d => d -> u) ->IntPtr -> [u]Source#

gmapQi ::Int -> (forall d.Data d => d -> u) ->IntPtr -> uSource#

gmapM ::Monad m => (forall d.Data d => d -> m d) ->IntPtr -> mIntPtrSource#

gmapMp ::MonadPlus m => (forall d.Data d => d -> m d) ->IntPtr -> mIntPtrSource#

gmapMo ::MonadPlus m => (forall d.Data d => d -> m d) ->IntPtr -> mIntPtrSource#

NumIntPtrSource# 
Instance details

Defined inForeign.Ptr

OrdIntPtrSource# 
Instance details

Defined inForeign.Ptr

ReadIntPtrSource# 
Instance details

Defined inForeign.Ptr

RealIntPtrSource# 
Instance details

Defined inForeign.Ptr

ShowIntPtrSource# 
Instance details

Defined inForeign.Ptr

FiniteBitsIntPtrSource# 
Instance details

Defined inForeign.Ptr

BitsIntPtrSource# 
Instance details

Defined inForeign.Ptr

StorableIntPtrSource# 
Instance details

Defined inForeign.Ptr

ptrToIntPtr ::Ptr a ->IntPtrSource#

casts aPtr to anIntPtr

intPtrToPtr ::IntPtr ->Ptr aSource#

casts anIntPtr to aPtr

newtypeWordPtrSource#

An unsigned integral type that can be losslessly converted to and fromPtr. This type is also compatible with the C99 typeuintptr_t, and can be marshalled to and from that type safely.

Constructors

WordPtrWord 
Instances
BoundedWordPtrSource# 
Instance details

Defined inForeign.Ptr

EnumWordPtrSource# 
Instance details

Defined inForeign.Ptr

EqWordPtrSource# 
Instance details

Defined inForeign.Ptr

IntegralWordPtrSource# 
Instance details

Defined inForeign.Ptr

DataWordPtrSource#

Since: 4.11.0.0

Instance details

Defined inData.Data

Methods

gfoldl :: (forall d b.Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) ->WordPtr -> cWordPtrSource#

gunfold :: (forall b r.Data b => c (b -> r) -> c r) -> (forall r. r -> c r) ->Constr -> cWordPtrSource#

toConstr ::WordPtr ->ConstrSource#

dataTypeOf ::WordPtr ->DataTypeSource#

dataCast1 ::Typeable t => (forall d.Data d => c (t d)) ->Maybe (cWordPtr)Source#

dataCast2 ::Typeable t => (forall d e. (Data d,Data e) => c (t d e)) ->Maybe (cWordPtr)Source#

gmapT :: (forall b.Data b => b -> b) ->WordPtr ->WordPtrSource#

gmapQl :: (r -> r' -> r) -> r -> (forall d.Data d => d -> r') ->WordPtr -> rSource#

gmapQr :: (r' -> r -> r) -> r -> (forall d.Data d => d -> r') ->WordPtr -> rSource#

gmapQ :: (forall d.Data d => d -> u) ->WordPtr -> [u]Source#

gmapQi ::Int -> (forall d.Data d => d -> u) ->WordPtr -> uSource#

gmapM ::Monad m => (forall d.Data d => d -> m d) ->WordPtr -> mWordPtrSource#

gmapMp ::MonadPlus m => (forall d.Data d => d -> m d) ->WordPtr -> mWordPtrSource#

gmapMo ::MonadPlus m => (forall d.Data d => d -> m d) ->WordPtr -> mWordPtrSource#

NumWordPtrSource# 
Instance details

Defined inForeign.Ptr

OrdWordPtrSource# 
Instance details

Defined inForeign.Ptr

ReadWordPtrSource# 
Instance details

Defined inForeign.Ptr

RealWordPtrSource# 
Instance details

Defined inForeign.Ptr

ShowWordPtrSource# 
Instance details

Defined inForeign.Ptr

FiniteBitsWordPtrSource# 
Instance details

Defined inForeign.Ptr

BitsWordPtrSource# 
Instance details

Defined inForeign.Ptr

Methods

(.&.) ::WordPtr ->WordPtr ->WordPtrSource#

(.|.) ::WordPtr ->WordPtr ->WordPtrSource#

xor ::WordPtr ->WordPtr ->WordPtrSource#

complement ::WordPtr ->WordPtrSource#

shift ::WordPtr ->Int ->WordPtrSource#

rotate ::WordPtr ->Int ->WordPtrSource#

zeroBits ::WordPtrSource#

bit ::Int ->WordPtrSource#

setBit ::WordPtr ->Int ->WordPtrSource#

clearBit ::WordPtr ->Int ->WordPtrSource#

complementBit ::WordPtr ->Int ->WordPtrSource#

testBit ::WordPtr ->Int ->BoolSource#

bitSizeMaybe ::WordPtr ->MaybeIntSource#

bitSize ::WordPtr ->IntSource#

isSigned ::WordPtr ->BoolSource#

shiftL ::WordPtr ->Int ->WordPtrSource#

unsafeShiftL ::WordPtr ->Int ->WordPtrSource#

shiftR ::WordPtr ->Int ->WordPtrSource#

unsafeShiftR ::WordPtr ->Int ->WordPtrSource#

rotateL ::WordPtr ->Int ->WordPtrSource#

rotateR ::WordPtr ->Int ->WordPtrSource#

popCount ::WordPtr ->IntSource#

StorableWordPtrSource# 
Instance details

Defined inForeign.Ptr

ptrToWordPtr ::Ptr a ->WordPtrSource#

casts aPtr to aWordPtr

wordPtrToPtr ::WordPtr ->Ptr aSource#

casts aWordPtr to aPtr

Produced byHaddock version 2.20.0


[8]ページ先頭

©2009-2025 Movatter.jp