{-# LANGUAGE CApiFFI #-}
module OpenCascade.XCAFDoc.DocumentTool
( shapeTool
) where

import OpenCascade.XCAFDoc.Types (ShapeTool)
import OpenCascade.XCAFDoc.Internal.Destructors (deleteShapeToolHandle)
import OpenCascade.TDF.Types (Label)
import OpenCascade.Handle (Handle)
import Foreign.Ptr (Ptr)
import Data.Acquire (Acquire, mkAcquire)

foreign import capi unsafe "hs_XCAFDoc_DocumentTool.h hs_XCAFDoc_DocumentTool_shapeTool" rawShapeTool :: Ptr Label -> IO (Ptr (Handle ShapeTool))

shapeTool :: Ptr Label -> Acquire (Ptr (Handle ShapeTool))
shapeTool :: Ptr Label -> Acquire (Ptr (Handle ShapeTool))
shapeTool Ptr Label
label = IO (Ptr (Handle ShapeTool))
-> (Ptr (Handle ShapeTool) -> IO ())
-> Acquire (Ptr (Handle ShapeTool))
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire  (Ptr Label -> IO (Ptr (Handle ShapeTool))
rawShapeTool Ptr Label
label) Ptr (Handle ShapeTool) -> IO ()
deleteShapeToolHandle