packages feed

opencascade-hs-0.6.3.0: src/OpenCascade/TopLoc/Location.hs

{-# LANGUAGE CApiFFI #-}
module OpenCascade.TopLoc.Location
( Location
, new
, fromGPTrsf
, isIdentity
, firstPower
, nextLocation
, inverted
, multiplied
, divided
, predivided
, powered
, isEqual
, isDifferent
, clear
, toGPTrsf
) where

import OpenCascade.TopLoc.Types
import OpenCascade.TopLoc.Internal.Destructors
import OpenCascade.GP.Internal.Destructors (deleteTrsf)
import OpenCascade.Internal.Exception (wrapException)
import Foreign.C
import Foreign.Ptr
import Data.Acquire
import qualified OpenCascade.GP as GP

-- new 

foreign import capi unsafe "hs_TopLoc_Location.h hs_new_TopLoc_Location" rawNew :: IO (Ptr Location)

new :: Acquire (Ptr Location)
new = mkAcquire rawNew deleteLocation

-- from GP.Trsf

foreign import capi unsafe "hs_TopLoc_Location.h hs_new_TopLoc_Location_fromGPTrsf" rawFromGPTrsf :: Ptr GP.Trsf -> IO (Ptr Location)

fromGPTrsf :: Ptr (GP.Trsf) -> Acquire (Ptr Location)
fromGPTrsf t = mkAcquire (rawFromGPTrsf t) deleteLocation

-- isIdentity

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_IsIdentity" rawIsIdentity :: Ptr Location -> IO (CBool)

isIdentity :: Ptr Location -> IO Bool
isIdentity l = (/=0) <$>  rawIsIdentity l

-- firstPower 
--
foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_FirstPower" rawFirstPower :: Ptr Location -> IO (CInt)

firstPower :: Ptr Location -> IO Int
firstPower l = fromIntegral <$> rawFirstPower l 

-- nextLocation

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_NextLocation" rawNextLocation
    :: Ptr Location -> Ptr CInt -> Ptr (Ptr ()) -> IO (Ptr Location)

nextLocation :: Ptr Location -> Acquire (Ptr Location)
nextLocation l = mkAcquire (wrapException $ rawNextLocation l) deleteLocation

-- inverted

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_Inverted" rawInverted
    :: Ptr Location -> Ptr CInt -> Ptr (Ptr ()) -> IO (Ptr Location)

inverted :: Ptr Location -> Acquire (Ptr Location)
inverted l = mkAcquire (wrapException $ rawInverted l) deleteLocation

-- multiplied

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_Multiplied" rawMultiplied
    :: Ptr Location -> Ptr Location -> Ptr CInt -> Ptr (Ptr ()) -> IO (Ptr Location)

multiplied :: Ptr Location -> Ptr Location -> Acquire (Ptr Location)
multiplied a b = mkAcquire (wrapException $ rawMultiplied a b) deleteLocation


-- divided

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_Divided" rawDivided
    :: Ptr Location -> Ptr Location -> Ptr CInt -> Ptr (Ptr ()) -> IO (Ptr Location)

divided :: Ptr Location -> Ptr Location -> Acquire (Ptr Location)
divided a b = mkAcquire (wrapException $ rawDivided a b) deleteLocation


-- predivided

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_Predivided" rawPredivided
    :: Ptr Location -> Ptr Location -> Ptr CInt -> Ptr (Ptr ()) -> IO (Ptr Location)

predivided :: Ptr Location -> Ptr Location -> Acquire (Ptr Location)
predivided a b = mkAcquire (wrapException $ rawPredivided a b) deleteLocation

-- powered

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_Powered" rawPowered
    :: Ptr Location -> CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO (Ptr Location)

powered :: Ptr Location -> Int -> Acquire (Ptr Location)
powered l p = mkAcquire (wrapException $ rawPowered l (fromIntegral p)) deleteLocation

-- isEqual

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_IsEqual" rawIsEqual :: Ptr Location -> Ptr Location -> IO (CBool)

isEqual :: Ptr Location -> Ptr Location -> IO Bool
isEqual a b = (/=0) <$> rawIsEqual a b


-- isDifferent

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_IsDifferent" rawIsDifferent :: Ptr Location -> Ptr Location -> IO (CBool)

isDifferent :: Ptr Location -> Ptr Location -> IO Bool
isDifferent a b = (/=0) <$> rawIsDifferent a b


-- clear

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_Clear" clear :: Ptr Location -> IO ()

-- toGPTrsf
--

foreign import capi unsafe "hs_TopLoc_Location.h hs_TopLoc_Location_toGPTrsf" rawToGPTrsf :: Ptr Location -> IO (Ptr GP.Trsf)

toGPTrsf :: Ptr Location -> Acquire (Ptr GP.Trsf)
toGPTrsf l = mkAcquire (rawToGPTrsf l) deleteTrsf