Safe Haskell | None |
---|---|
Language | Haskell98 |
Synopsis
- class (Storable a, C a) => C a where
- storeNext :: (C a, Value (Ptr a) ~ ptr) => T a -> ptr -> CodeGenFunction r ptr
- modify :: (C a, T a ~ al) => (al -> CodeGenFunction r al) -> Value (Ptr a) -> CodeGenFunction r ()
- class (Storable tuple, C tuple) => Tuple tuple where
- class (C a, C a) => Vector a where
- assembleVector :: Positive n => Proxy a -> Vector n (Repr a) -> CodeGenFunction r (Repr n a)
- disassembleVector :: Positive n => Proxy a -> Repr n a -> CodeGenFunction r (Vector n (Repr a))
- class C a => TupleVector a where
- deinterleave :: Positive n => Proxy a -> Vector n (Repr a) -> CodeGenFunction r (Repr n a)
- interleave :: Positive n => Proxy a -> Repr n a -> CodeGenFunction r (Vector n (Repr a))
- loadTraversable :: (Repeat f, Traversable f, C a, Repr fa ~ f (Repr a)) => Value (Ptr (f a)) -> CodeGenFunction r (T fa)
- loadApplicative :: (Applicative f, Traversable f, C a, Repr fa ~ f (Repr a)) => Value (Ptr (f a)) -> CodeGenFunction r (T fa)
- storeFoldable :: (Foldable f, C a, Repr fa ~ f (Repr a)) => T fa -> Value (Ptr (f a)) -> CodeGenFunction r ()
- advancePtr :: (Storable a, Value (Ptr a) ~ ptr) => Value Int -> ptr -> CodeGenFunction r ptr
- incrementPtr :: (Storable a, Value (Ptr a) ~ ptr) => ptr -> CodeGenFunction r ptr
- decrementPtr :: (Storable a, Value (Ptr a) ~ ptr) => ptr -> CodeGenFunction r ptr
- arrayLoop :: (Phi s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA) => Value i -> ptrA -> s -> (ptrA -> s -> CodeGenFunction r s) -> CodeGenFunction r s
- arrayLoop2 :: (Phi s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA, Storable b, Value (Ptr b) ~ ptrB) => Value i -> ptrA -> ptrB -> s -> (ptrA -> ptrB -> s -> CodeGenFunction r s) -> CodeGenFunction r s
- arrayLoopMaybeCont :: (Phi s, Undefined s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA, T (ptrA, s) ~ z) => Value i -> ptrA -> s -> (ptrA -> s -> T r z s) -> CodeGenFunction r (Value i, T s)
- arrayLoopMaybeCont2 :: (Phi s, Undefined s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA, Storable b, Value (Ptr b) ~ ptrB, T (ptrA, (ptrB, s)) ~ z) => Value i -> ptrA -> ptrB -> s -> (ptrA -> ptrB -> s -> T r z s) -> CodeGenFunction r (Value i, T s)
Basic class
class (Storable a, C a) => C a where Source #
load :: Value (Ptr a) -> CodeGenFunction r (T a) Source #
store :: T a -> Value (Ptr a) -> CodeGenFunction r () Source #
Instances
C Bool Source # | Not very efficient implementation
because we want to adapt to |
C Double Source # | |
C Float Source # | |
C Int Source # | |
C Int8 Source # | |
C Int16 Source # | |
C Int32 Source # | |
C Int64 Source # | |
C Word Source # | |
C Word8 Source # | |
C Word16 Source # | |
C Word32 Source # | |
C Word64 Source # | |
C () Source # | |
C Bool8 Source # | |
C a => C (Complex a) Source # | |
Tuple tuple => C (Tuple tuple) Source # | |
(Marshal a, IsConst a, IsFirstClass a) => C (Stored a) Source # | |
(Positive n, Vector a) => C (Vector n a) Source # | |
modify :: (C a, T a ~ al) => (al -> CodeGenFunction r al) -> Value (Ptr a) -> CodeGenFunction r () Source #
Classes for tuples and vectors
class (Storable tuple, C tuple) => Tuple tuple where Source #
loadTuple :: Value (Ptr (Tuple tuple)) -> CodeGenFunction r (T tuple) Source #
storeTuple :: T tuple -> Value (Ptr (Tuple tuple)) -> CodeGenFunction r () Source #
class (C a, C a) => Vector a where Source #
assembleVector :: Positive n => Proxy a -> Vector n (Repr a) -> CodeGenFunction r (Repr n a) Source #
disassembleVector :: Positive n => Proxy a -> Repr n a -> CodeGenFunction r (Vector n (Repr a)) Source #
Instances
Vector Bool Source # | |
Vector Double Source # | |
Vector Float Source # | |
Vector Int Source # | |
Vector Int8 Source # | |
Vector Int16 Source # | |
Vector Int32 Source # | |
Vector Int64 Source # | |
Vector Word Source # | |
Vector Word8 Source # | |
Vector Word16 Source # | |
Vector Word32 Source # | |
Vector Word64 Source # | |
Vector Bool8 Source # | |
(Tuple tuple, TupleVector tuple) => Vector (Tuple tuple) Source # | |
Defined in LLVM.Extra.Multi.Value.Storable |
class C a => TupleVector a where Source #
deinterleave :: Positive n => Proxy a -> Vector n (Repr a) -> CodeGenFunction r (Repr n a) Source #
interleave :: Positive n => Proxy a -> Repr n a -> CodeGenFunction r (Vector n (Repr a)) Source #
Instances
(Vector a, Vector b) => TupleVector (a, b) Source # | |
Defined in LLVM.Extra.Multi.Value.Storable | |
(Vector a, Vector b, Vector c) => TupleVector (a, b, c) Source # | |
Defined in LLVM.Extra.Multi.Value.Storable |
Standard method implementations
loadTraversable :: (Repeat f, Traversable f, C a, Repr fa ~ f (Repr a)) => Value (Ptr (f a)) -> CodeGenFunction r (T fa) Source #
loadApplicative :: (Applicative f, Traversable f, C a, Repr fa ~ f (Repr a)) => Value (Ptr (f a)) -> CodeGenFunction r (T fa) Source #
storeFoldable :: (Foldable f, C a, Repr fa ~ f (Repr a)) => T fa -> Value (Ptr (f a)) -> CodeGenFunction r () Source #
Pointer handling
advancePtr :: (Storable a, Value (Ptr a) ~ ptr) => Value Int -> ptr -> CodeGenFunction r ptr Source #
incrementPtr :: (Storable a, Value (Ptr a) ~ ptr) => ptr -> CodeGenFunction r ptr Source #
decrementPtr :: (Storable a, Value (Ptr a) ~ ptr) => ptr -> CodeGenFunction r ptr Source #
Loops over Storable arrays
arrayLoop :: (Phi s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA) => Value i -> ptrA -> s -> (ptrA -> s -> CodeGenFunction r s) -> CodeGenFunction r s Source #
arrayLoop2 :: (Phi s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA, Storable b, Value (Ptr b) ~ ptrB) => Value i -> ptrA -> ptrB -> s -> (ptrA -> ptrB -> s -> CodeGenFunction r s) -> CodeGenFunction r s Source #
arrayLoopMaybeCont :: (Phi s, Undefined s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA, T (ptrA, s) ~ z) => Value i -> ptrA -> s -> (ptrA -> s -> T r z s) -> CodeGenFunction r (Value i, T s) Source #
arrayLoopMaybeCont2 :: (Phi s, Undefined s, Num i, IsConst i, IsInteger i, CmpRet i, IsPrimitive i, Storable a, Value (Ptr a) ~ ptrA, Storable b, Value (Ptr b) ~ ptrB, T (ptrA, (ptrB, s)) ~ z) => Value i -> ptrA -> ptrB -> s -> (ptrA -> ptrB -> s -> T r z s) -> CodeGenFunction r (Value i, T s) Source #