ivory-0.1.0.5: src/Ivory/Language/Ptr.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Ivory.Language.Ptr
( Ptr
, nullPtr
, ptrToRef
, refToPtr
, withRef
) where
import Ivory.Language.Area
import Ivory.Language.Pointer
(Constancy(Mutable), Nullability(Nullable), Pointer,
pointerCastToNullable, unsafePointerCast, nullPtr, withRef)
import Ivory.Language.Ref
-- Pointers --------------------------------------------------------------------
-- | Pointers (nullable references).
type Ptr = Pointer 'Nullable 'Mutable
-- | Convert valid to nullable pointer.
-- TODO deprecate in favor of 'pointerCastToNullable'
refToPtr :: IvoryArea area => Ref s area -> Ptr s area
refToPtr = pointerCastToNullable
-- | Convert nullable to valid pointer unsafely.
-- TODO deprecate in favor of 'unsafePointerCast'
ptrToRef :: IvoryArea area => Ptr s area -> Ref s area
ptrToRef = unsafePointerCast