Z-Data-0.1.4.0: Array, vector and text

Copyright(c) Dong Han 2017-2019
LicenseBSD
Maintainerwinterland1989@gmail.com
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Z.Data.Array.UnalignedAccess

Description

This module implements unaligned element access with ghc primitives (> 8.6).

Synopsis

Documentation

newtype UnalignedSize a Source #

Constructors

UnalignedSize 
Instances
Eq (UnalignedSize a) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

Show (UnalignedSize a) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

class UnalignedAccess a where Source #

Primitive types which can be unaligned accessed

It can also be used as a lightweight method to peek/poke value from/to C structs when you pass MutableByteArray# to FFI as struct pointer, e.g.

 -- | note the .hsc syntax
 peekSocketAddrMBA :: HasCallStack => MBA## SocketAddr -> IO SocketAddr
 peekSocketAddrMBA p = do
     family <- peekMBA p (#offset struct sockaddr, sa_family)
     case family :: CSaFamily of
         (#const AF_INET) -> do
             addr <- peekMBA p (#offset struct sockaddr_in, sin_addr)
             port <- peekMBA p (#offset struct sockaddr_in, sin_port)
             return (SocketAddrInet (PortNumber port) addr)
         ....

Methods

unalignedSize :: UnalignedSize a Source #

byte size

indexWord8ArrayAs# :: ByteArray# -> Int# -> a Source #

index element off byte array with offset in bytes(maybe unaligned)

readWord8ArrayAs# :: MutableByteArray# s -> Int# -> State# s -> (#State# s, a#) Source #

read element from byte array with offset in bytes(maybe unaligned)

writeWord8ArrayAs# :: MutableByteArray# s -> Int# -> a -> State# s -> State# s Source #

write element to byte array with offset in bytes(maybe unaligned)

peekMBA :: MutableByteArray# RealWorld -> Int -> IO a Source #

IO version of writeWord8ArrayAs# but more convenient to write manually.

pokeMBA :: MutableByteArray# RealWorld -> Int -> a -> IO () Source #

IO version of readWord8ArrayAs# but more convenient to write manually.

indexBA :: ByteArray# -> Int -> a Source #

index element off byte array with offset in bytes(maybe unaligned)

Instances
UnalignedAccess Char Source #

Char's instance use 31bit wide char prim-op.

Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Double Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Float Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Int Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Int8 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Int16 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Int32 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Int64 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Word Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Word8 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Word16 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Word32 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess Word64 Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CChar Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CSChar Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CUChar Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CShort Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CUShort Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CInt Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CUInt Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CLong Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CULong Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CLLong Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CULLong Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CBool Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CFloat Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CDouble Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CPtrdiff Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CSize Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CWchar Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CSigAtomic Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CClock Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CTime Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CUSeconds Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CSUSeconds Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CIntPtr Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CUIntPtr Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CIntMax Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess CUIntMax Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Char) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Double) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Float) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Char) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Double) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Float) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

newtype LE a Source #

little endianess wrapper

Constructors

LE 

Fields

Instances
Eq a => Eq (LE a) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

Methods

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

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

Show a => Show (LE a) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

Methods

showsPrec :: Int -> LE a -> ShowS #

show :: LE a -> String #

showList :: [LE a] -> ShowS #

UnalignedAccess (LE Char) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Double) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Float) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Int64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (LE Word64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

newtype BE a Source #

big endianess wrapper

Constructors

BE 

Fields

Instances
Eq a => Eq (BE a) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

Methods

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

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

Show a => Show (BE a) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

Methods

showsPrec :: Int -> BE a -> ShowS #

show :: BE a -> String #

showList :: [BE a] -> ShowS #

UnalignedAccess (BE Char) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Double) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Float) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Int64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word16) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word32) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess

UnalignedAccess (BE Word64) Source # 
Instance details

Defined in Z.Data.Array.UnalignedAccess