module HsForeign.Utils
  ( withMaybePtr
  ) where

import           Foreign.Ptr

withMaybePtr
  :: Maybe a
  -> (a -> (Ptr a -> IO b) -> IO b)
  -> (Ptr a -> IO b)
  -> IO b
withMaybePtr :: Maybe a
-> (a -> (Ptr a -> IO b) -> IO b) -> (Ptr a -> IO b) -> IO b
withMaybePtr Maybe a
Nothing a -> (Ptr a -> IO b) -> IO b
_withx Ptr a -> IO b
f = Ptr a -> IO b
f Ptr a
forall a. Ptr a
nullPtr
withMaybePtr (Just a
x) a -> (Ptr a -> IO b) -> IO b
withx Ptr a -> IO b
f = a -> (Ptr a -> IO b) -> IO b
withx a
x Ptr a -> IO b
f
{-# INLINABLE withMaybePtr #-}