{-# 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