haskus-binary-1.5: src/lib/Haskus/Memory/Property.hs
-- | Memory properties
module Haskus.Memory.Property
( Mutability (..)
, Heap (..)
, Pinning (..)
, Finalization (..)
)
where
-- | Is the memory mutable or not?
data Mutability
= Mutable -- ^ Memory cells are mutable
| Immutable -- ^ Memory cells are immutable
deriving (Show,Eq)
-- | Allocation heap
data Heap
= Internal -- ^ GHC heap
| External -- ^ External heap
-- | Is the buffer pinned into memory?
data Pinning
= Pinned -- ^ The buffer has a fixed associated memory address
| NotPinned -- ^ The buffer contents can be freely moved to another address
deriving (Show,Eq)
-- | Is the memory automatically garbage collected?
data Finalization
= Collected -- ^ Automatically collected by the garbage-collector
| Finalized -- ^ Finalizers are run just before the garbage collector
-- collects the referencing entity (buffer, pointer...). The
-- memory used by the entity may be collected too (Internal
-- heap), explicitly freed by a finalizer or not freed at all.
| NotFinalized -- ^ The memory is not automatically freed and we
-- can't attach finalizers to the buffer.
deriving (Show,Eq)