module Foreign.Matlab.Array.Auto (
MXAuto,
mxAuto,
withMXAuto,
MAnyAuto
) where
import Foreign
import Foreign.Matlab.Util
import Foreign.Matlab.Internal
newtype MXAuto a = MXAuto (ForeignPtr MXArrayType)
foreign import ccall unsafe "&mxDestroyArray" mxDestroyArray_ptr :: FunPtr (MXArrayPtr -> IO ())
mxAuto :: MXArray a -> MIO (MXAuto a)
mxAuto (MXArray a)
| a == nullPtr = MXAuto =.< newForeignPtr_ a
| otherwise = MXAuto =.< newForeignPtr mxDestroyArray_ptr a
withMXAuto :: MXAuto a -> (MXArray a -> IO b) -> IO b
withMXAuto (MXAuto a) f = withForeignPtr a (f . MXArray)
type MAnyAuto = MXAuto MAny