foundation-0.0.25: Alternative prelude with batteries and no dependencies

License | BSD-style
Maintainer | Haskell Foundation
Stability | experimental
Portability | portable
Safe Haskell | None
Language | Haskell2010

Foundation.Class.Storable

Contents

- Ptr
- offset based helper
- Collection

Description

https://github.com/haskell-foundation/issues/111

Synopsis

- class Storable a where
  - peek :: Ptr a -> IO a
  - poke :: Ptr a -> a -> IO ()
- class Storable a => StorableFixed a where
  - size :: proxy a -> CountOf Word8
  - alignment :: proxy a -> CountOf Word8
- data Ptr a
- plusPtr :: StorableFixed a => Ptr a -> CountOf a -> Ptr a
- castPtr :: Ptr a -> Ptr b
- peekOff :: StorableFixed a => Ptr a -> Offset a -> IO a
- pokeOff :: StorableFixed a => Ptr a -> Offset a -> a -> IO ()
- peekArray :: (Buildable col, StorableFixed (Element col)) => CountOf (Element col) -> Ptr (Element col) -> IO col
- peekArrayEndedBy :: (Buildable col, StorableFixed (Element col), Eq (Element col), Show (Element col)) => Element col -> Ptr (Element col) -> IO col
- pokeArray :: (Sequential col, StorableFixed (Element col)) => Ptr (Element col) -> col -> IO ()
- pokeArrayEndedBy :: (Sequential col, StorableFixed (Element col)) => Element col -> Ptr (Element col) -> col -> IO ()

# Documentation

class Storable a where Source #

Storable type of self determined size.

Methods

peek :: Ptr a -> IO a Source #

poke :: Ptr a -> a -> IO () Source #

#### Instances

Instances details

Storable Char Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Char -> IO Char Source # poke :: Ptr Char -> Char -> IO () Source #
Storable Double Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Double -> IO Double Source # poke :: Ptr Double -> Double -> IO () Source #
Storable Float Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Float -> IO Float Source # poke :: Ptr Float -> Float -> IO () Source #
Storable Int8 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Int8 -> IO Int8 Source # poke :: Ptr Int8 -> Int8 -> IO () Source #
Storable Int16 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Int16 -> IO Int16 Source # poke :: Ptr Int16 -> Int16 -> IO () Source #
Storable Int32 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Int32 -> IO Int32 Source # poke :: Ptr Int32 -> Int32 -> IO () Source #
Storable Int64 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Int64 -> IO Int64 Source # poke :: Ptr Int64 -> Int64 -> IO () Source #
Storable Word8 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Word8 -> IO Word8 Source # poke :: Ptr Word8 -> Word8 -> IO () Source #
Storable Word16 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Word16 -> IO Word16 Source # poke :: Ptr Word16 -> Word16 -> IO () Source #
Storable Word32 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Word32 -> IO Word32 Source # poke :: Ptr Word32 -> Word32 -> IO () Source #
Storable Word64 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Word64 -> IO Word64 Source # poke :: Ptr Word64 -> Word64 -> IO () Source #
Storable Word256 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Word256 -> IO Word256 Source # poke :: Ptr Word256 -> Word256 -> IO () Source #
Storable Word128 Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr Word128 -> IO Word128 Source # poke :: Ptr Word128 -> Word128 -> IO () Source #
Storable CUChar Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr CUChar -> IO CUChar Source # poke :: Ptr CUChar -> CUChar -> IO () Source #
Storable CChar Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr CChar -> IO CChar Source # poke :: Ptr CChar -> CChar -> IO () Source #
Storable IPv6 Source # |
Instance details Defined in Foundation.Network.IPv6 Methods peek :: Ptr IPv6 -> IO IPv6 Source # poke :: Ptr IPv6 -> IPv6 -> IO () Source #
Storable IPv4 Source # |
Instance details Defined in Foundation.Network.IPv4 Methods peek :: Ptr IPv4 -> IO IPv4 Source # poke :: Ptr IPv4 -> IPv4 -> IO () Source #
Storable UUID Source # |
Instance details Defined in Foundation.UUID Methods peek :: Ptr UUID -> IO UUID Source # poke :: Ptr UUID -> UUID -> IO () Source #
Storable (Ptr a) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (Ptr a) -> IO (Ptr a) Source # poke :: Ptr (Ptr a) -> Ptr a -> IO () Source #
Storable (LE Word16) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (LE Word16) -> IO (LE Word16) Source # poke :: Ptr (LE Word16) -> LE Word16 -> IO () Source #
Storable (LE Word32) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (LE Word32) -> IO (LE Word32) Source # poke :: Ptr (LE Word32) -> LE Word32 -> IO () Source #
Storable (LE Word64) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (LE Word64) -> IO (LE Word64) Source # poke :: Ptr (LE Word64) -> LE Word64 -> IO () Source #
Storable (LE Word256) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (LE Word256) -> IO (LE Word256) Source # poke :: Ptr (LE Word256) -> LE Word256 -> IO () Source #
Storable (LE Word128) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (LE Word128) -> IO (LE Word128) Source # poke :: Ptr (LE Word128) -> LE Word128 -> IO () Source #
Storable (BE Word16) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (BE Word16) -> IO (BE Word16) Source # poke :: Ptr (BE Word16) -> BE Word16 -> IO () Source #
Storable (BE Word32) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (BE Word32) -> IO (BE Word32) Source # poke :: Ptr (BE Word32) -> BE Word32 -> IO () Source #
Storable (BE Word64) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (BE Word64) -> IO (BE Word64) Source # poke :: Ptr (BE Word64) -> BE Word64 -> IO () Source #
Storable (BE Word256) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (BE Word256) -> IO (BE Word256) Source # poke :: Ptr (BE Word256) -> BE Word256 -> IO () Source #
Storable (BE Word128) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (BE Word128) -> IO (BE Word128) Source # poke :: Ptr (BE Word128) -> BE Word128 -> IO () Source #

class Storable a => StorableFixed a where Source #

Extending the Storable type class to the types that can be sequenced in a structure.

Methods

size :: proxy a -> CountOf Word8 Source #

alignment :: proxy a -> CountOf Word8 Source #

#### Instances

Instances details

StorableFixed Char Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Char -> CountOf Word8 Source # alignment :: proxy Char -> CountOf Word8 Source #
StorableFixed Double Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Double -> CountOf Word8 Source # alignment :: proxy Double -> CountOf Word8 Source #
StorableFixed Float Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Float -> CountOf Word8 Source # alignment :: proxy Float -> CountOf Word8 Source #
StorableFixed Int8 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Int8 -> CountOf Word8 Source # alignment :: proxy Int8 -> CountOf Word8 Source #
StorableFixed Int16 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Int16 -> CountOf Word8 Source # alignment :: proxy Int16 -> CountOf Word8 Source #
StorableFixed Int32 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Int32 -> CountOf Word8 Source # alignment :: proxy Int32 -> CountOf Word8 Source #
StorableFixed Int64 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Int64 -> CountOf Word8 Source # alignment :: proxy Int64 -> CountOf Word8 Source #
StorableFixed Word8 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Word8 -> CountOf Word8 Source # alignment :: proxy Word8 -> CountOf Word8 Source #
StorableFixed Word16 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Word16 -> CountOf Word8 Source # alignment :: proxy Word16 -> CountOf Word8 Source #
StorableFixed Word32 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Word32 -> CountOf Word8 Source # alignment :: proxy Word32 -> CountOf Word8 Source #
StorableFixed Word64 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Word64 -> CountOf Word8 Source # alignment :: proxy Word64 -> CountOf Word8 Source #
StorableFixed Word256 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Word256 -> CountOf Word8 Source # alignment :: proxy Word256 -> CountOf Word8 Source #
StorableFixed Word128 Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy Word128 -> CountOf Word8 Source # alignment :: proxy Word128 -> CountOf Word8 Source #
StorableFixed CUChar Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy CUChar -> CountOf Word8 Source # alignment :: proxy CUChar -> CountOf Word8 Source #
StorableFixed CChar Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy CChar -> CountOf Word8 Source # alignment :: proxy CChar -> CountOf Word8 Source #
StorableFixed IPv6 Source # |
Instance details Defined in Foundation.Network.IPv6 Methods size :: proxy IPv6 -> CountOf Word8 Source # alignment :: proxy IPv6 -> CountOf Word8 Source #
StorableFixed IPv4 Source # |
Instance details Defined in Foundation.Network.IPv4 Methods size :: proxy IPv4 -> CountOf Word8 Source # alignment :: proxy IPv4 -> CountOf Word8 Source #
StorableFixed UUID Source # |
Instance details Defined in Foundation.UUID Methods size :: proxy UUID -> CountOf Word8 Source # alignment :: proxy UUID -> CountOf Word8 Source #
StorableFixed (Ptr a) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (Ptr a) -> CountOf Word8 Source # alignment :: proxy (Ptr a) -> CountOf Word8 Source #
StorableFixed (LE Word16) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (LE Word16) -> CountOf Word8 Source # alignment :: proxy (LE Word16) -> CountOf Word8 Source #
StorableFixed (LE Word32) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (LE Word32) -> CountOf Word8 Source # alignment :: proxy (LE Word32) -> CountOf Word8 Source #
StorableFixed (LE Word64) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (LE Word64) -> CountOf Word8 Source # alignment :: proxy (LE Word64) -> CountOf Word8 Source #
StorableFixed (LE Word256) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (LE Word256) -> CountOf Word8 Source # alignment :: proxy (LE Word256) -> CountOf Word8 Source #
StorableFixed (LE Word128) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (LE Word128) -> CountOf Word8 Source # alignment :: proxy (LE Word128) -> CountOf Word8 Source #
StorableFixed (BE Word16) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (BE Word16) -> CountOf Word8 Source # alignment :: proxy (BE Word16) -> CountOf Word8 Source #
StorableFixed (BE Word32) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (BE Word32) -> CountOf Word8 Source # alignment :: proxy (BE Word32) -> CountOf Word8 Source #
StorableFixed (BE Word64) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (BE Word64) -> CountOf Word8 Source # alignment :: proxy (BE Word64) -> CountOf Word8 Source #
StorableFixed (BE Word256) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (BE Word256) -> CountOf Word8 Source # alignment :: proxy (BE Word256) -> CountOf Word8 Source #
StorableFixed (BE Word128) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (BE Word128) -> CountOf Word8 Source # alignment :: proxy (BE Word128) -> CountOf Word8 Source #

# Ptr

data Ptr a #

#### Instances

Instances details

Generic1 (URec (Ptr ()) :: k -> Type) |
Instance details Defined in GHC.Generics Associated Types type Rep1 (URec (Ptr ())) :: k -> Type Methods from1 :: forall (a :: k0). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a to1 :: forall (a :: k0). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a
Eq (Ptr a) |
Instance details Defined in GHC.Ptr Methods (==) :: Ptr a -> Ptr a -> Bool # (/=) :: Ptr a -> Ptr a -> Bool #
Data a => Data (Ptr a) |

Instance details

Defined in Data.Data

Methods

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

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

toConstr :: Ptr a -> Constr #

dataTypeOf :: Ptr a -> DataType #

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

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

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

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

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

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

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

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

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

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

Ord (Ptr a) |
Instance details Defined in GHC.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) |
Instance details Defined in GHC.Ptr Methods showsPrec :: Int -> Ptr a -> ShowS # show :: Ptr a -> String # showList :: [Ptr a] -> ShowS #
NormalForm (Ptr a) |
Instance details Defined in Basement.NormalForm Methods toNormalForm :: Ptr a -> () Source #
Storable (Ptr a) |
Instance details Defined in Foreign.Storable Methods sizeOf :: Ptr a -> Int alignment :: Ptr a -> Int peekElemOff :: Ptr (Ptr a) -> Int -> IO (Ptr a) pokeElemOff :: Ptr (Ptr a) -> Int -> Ptr a -> IO () peekByteOff :: Ptr b -> Int -> IO (Ptr a) pokeByteOff :: Ptr b -> Int -> Ptr a -> IO () peek :: Ptr (Ptr a) -> IO (Ptr a) poke :: Ptr (Ptr a) -> Ptr a -> IO ()
StorableFixed (Ptr a) Source # |
Instance details Defined in Foundation.Class.Storable Methods size :: proxy (Ptr a) -> CountOf Word8 Source # alignment :: proxy (Ptr a) -> CountOf Word8 Source #
Storable (Ptr a) Source # |
Instance details Defined in Foundation.Class.Storable Methods peek :: Ptr (Ptr a) -> IO (Ptr a) Source # poke :: Ptr (Ptr a) -> Ptr a -> IO () Source #
Functor (URec (Ptr ()) :: Type -> Type) |
Instance details Defined in GHC.Generics Methods fmap :: (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b # (<$) :: a -> URec (Ptr ()) b -> URec (Ptr ()) a #
Foldable (URec (Ptr ()) :: Type -> Type) |

Instance details

Defined in Data.Foldable

Methods

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

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

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

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

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

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

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

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

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

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

null :: URec (Ptr ()) a -> Bool

length :: URec (Ptr ()) a -> Int

elem :: Eq a => a -> URec (Ptr ()) a -> Bool

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

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

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

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

Traversable (URec (Ptr ()) :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec (Ptr ()) a -> f (URec (Ptr ()) b) sequenceA :: Applicative f => URec (Ptr ()) (f a) -> f (URec (Ptr ()) a) mapM :: Monad m => (a -> m b) -> URec (Ptr ()) a -> m (URec (Ptr ()) b) sequence :: Monad m => URec (Ptr ()) (m a) -> m (URec (Ptr ()) a)
Eq (URec (Ptr ()) p) |
Instance details Defined in GHC.Generics Methods (==) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (/=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool #
Ord (URec (Ptr ()) p) |

Instance details

Defined in GHC.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) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec (Ptr ()) p) :: Type -> Type # Methods from :: URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x # to :: Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p #
data URec (Ptr ()) (p :: k) |

Instance details

Defined in GHC.Generics

data URec (Ptr ()) (p :: k) = UAddr {

- uAddr# :: Addr#

}

type Rep1 (URec (Ptr ()) :: k -> Type) |
Instance details Defined in GHC.Generics type Rep1 (URec (Ptr ()) :: k -> Type) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UAddr" 'PrefixI 'True) (S1 ('MetaSel ('Just "uAddr#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UAddr :: k -> Type)))
type Rep (URec (Ptr ()) p) |
Instance details Defined in GHC.Generics type Rep (URec (Ptr ()) p) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UAddr" 'PrefixI 'True) (S1 ('MetaSel ('Just "uAddr#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UAddr :: Type -> Type)))

plusPtr :: StorableFixed a => Ptr a -> CountOf a -> Ptr a Source #

castPtr :: Ptr a -> Ptr b #

# offset based helper

peekOff :: StorableFixed a => Ptr a -> Offset a -> IO a Source #

like `peek` but at a given offset.

pokeOff :: StorableFixed a => Ptr a -> Offset a -> a -> IO () Source #

like `poke` but at a given offset.

# Collection

peekArray :: (Buildable col, StorableFixed (Element col)) => CountOf (Element col) -> Ptr (Element col) -> IO col Source #

peekArrayEndedBy :: (Buildable col, StorableFixed (Element col), Eq (Element col), Show (Element col)) => Element col -> Ptr (Element col) -> IO col Source #

pokeArray :: (Sequential col, StorableFixed (Element col)) => Ptr (Element col) -> col -> IO () Source #

pokeArrayEndedBy :: (Sequential col, StorableFixed (Element col)) => Element col -> Ptr (Element col) -> col -> IO () Source #