content: {-# LANGUAGE CApiFFI #-}
  module OpenCascade.TopoDS.Shape
  ( Shape
  , new
  , copy
  , isNull
  , nullify
  , location
  , setLocation
  , located
  , orientation
  , setOrientation
  , oriented
  , shapeType
  , free
  , setFree
  , locked
  , setLocked
  , modified
  , setModified
  , checked
  , setChecked
  , orientable
  , setOrientable
  , closed
  , setClosed
  , infinite
  , setInfinite
  , convex
  , setConvex
  , move
  , moved
  , nbChildren
  , reverse
  , reversed
  , complement
  , complemented
  , isEqual
  , isPartner
  , isSame
  , isNotEqual
  , emptyCopy
  , emptyCopied
  ) where
  
  import Prelude hiding (reverse)
  import OpenCascade.TopoDS.Types
  import OpenCascade.TopoDS.Internal.Destructors
  import OpenCascade.Internal.Bool
  import Foreign.C
  import Foreign.Ptr
  import Data.Acquire 
  
  import qualified OpenCascade.TopLoc as TopLoc
  import qualified OpenCascade.TopLoc.Internal.Destructors as TopLoc.Destructors
  import qualified OpenCascade.TopAbs as TopAbs
  -- new
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_new_TopoDS_Shape" rawNew :: IO (Ptr Shape)
  
  new :: Acquire (Ptr Shape)
  new = mkAcquire rawNew  deleteShape
  
  -- copy
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_new_TopoDS_Shape_copy" rawCopy :: Ptr Shape -> IO (Ptr Shape)
  
  copy :: Ptr Shape -> Acquire (Ptr Shape)
  copy shape = mkAcquire (rawCopy shape)  deleteShape
  
  -- isNull 
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_IsNull" rawIsNull :: Ptr Shape -> IO CBool
  
  isNull :: Ptr Shape -> IO Bool
  isNull s = cBoolToBool <$> rawIsNull s
  
  -- Nullify 
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Nullify" nullify :: Ptr Shape -> IO ()
  
  -- location 
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Location" rawLocation :: Ptr Shape -> IO (Ptr TopLoc.Location)
  
  location :: Ptr Shape -> Acquire (Ptr TopLoc.Location)
  location s = mkAcquire (rawLocation s) TopLoc.Destructors.deleteLocation  
  
  -- setLocation 
  --
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetLocation" setLocation :: Ptr Shape -> Ptr TopLoc.Location -> IO ()
  
  -- located
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Located" rawLocated :: Ptr Shape -> Ptr TopLoc.Location -> IO (Ptr Shape)
  
  located :: Ptr Shape -> Ptr TopLoc.Location -> Acquire (Ptr Shape)
  located s l = mkAcquire (rawLocated s l) deleteShape
  
  
  -- orientation
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Orientation" rawOrientation :: Ptr Shape -> IO (CInt)
  
  orientation :: Ptr Shape -> IO TopAbs.Orientation
  orientation s = toEnum . fromIntegral <$> rawOrientation s
  
  -- setOrientation
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetOrientation" rawSetOrientation :: Ptr Shape -> CInt -> IO ()
  
  setOrientation :: Ptr Shape -> TopAbs.Orientation -> IO ()
  setOrientation s o = rawSetOrientation s (fromIntegral . fromEnum $ o) 
  
  
  -- oriented
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Oriented" rawOriented :: Ptr Shape -> CInt -> IO (Ptr Shape)
  
  oriented :: Ptr Shape -> TopAbs.Orientation -> Acquire (Ptr Shape)
  oriented s o = mkAcquire (rawOriented s (fromIntegral . fromEnum $ o)) deleteShape
  
  -- shapeType 
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_ShapeType" rawShapeType :: Ptr Shape -> IO CInt
  
  shapeType :: Ptr Shape -> IO TopAbs.ShapeEnum
  shapeType s = toEnum . fromIntegral <$> rawShapeType s
  
  -- free
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Free" rawFree :: Ptr Shape -> IO CBool
  
  free :: Ptr Shape -> IO Bool
  free s = cBoolToBool <$> rawFree s
  
  --setFree 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetFree" rawSetFree :: Ptr Shape -> CBool-> IO ()
  
  setFree :: Ptr Shape -> Bool -> IO ()
  setFree s b = rawSetFree s (boolToCBool b)
  
  -- locked
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Locked" rawLocked :: Ptr Shape -> IO CBool
  
  locked :: Ptr Shape -> IO Bool
  locked s = cBoolToBool <$> rawLocked s
  
  --setLocked 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetLocked" rawSetLocked :: Ptr Shape -> CBool-> IO ()
  
  setLocked :: Ptr Shape -> Bool -> IO ()
  setLocked s b = rawSetLocked s (boolToCBool b)
  
  
  
  -- modified
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Modified" rawModified :: Ptr Shape -> IO CBool
  
  modified :: Ptr Shape -> IO Bool
  modified s = cBoolToBool <$> rawModified s
  
  --setModified 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetModified" rawSetModified :: Ptr Shape -> CBool-> IO ()
  
  setModified :: Ptr Shape -> Bool -> IO ()
  setModified s b = rawSetModified s (boolToCBool b)
  
  
  -- checked
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Checked" rawChecked :: Ptr Shape -> IO CBool
  
  checked :: Ptr Shape -> IO Bool
  checked s = cBoolToBool <$> rawChecked s
  
  --setChecked 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetChecked" rawSetChecked :: Ptr Shape -> CBool-> IO ()
  
  setChecked :: Ptr Shape -> Bool -> IO ()
  setChecked s b = rawSetChecked s (boolToCBool b)
  
  -- orientable
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Orientable" rawOrientable :: Ptr Shape -> IO CBool
  
  orientable :: Ptr Shape -> IO Bool
  orientable s = cBoolToBool <$> rawOrientable s
  
  --setOrientable 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetOrientable" rawSetOrientable :: Ptr Shape -> CBool-> IO ()
  
  setOrientable :: Ptr Shape -> Bool -> IO ()
  setOrientable s b = rawSetOrientable s (boolToCBool b)
  
  -- closed
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Closed" rawClosed :: Ptr Shape -> IO CBool
  
  closed :: Ptr Shape -> IO Bool
  closed s = cBoolToBool <$> rawClosed s
  
  --setClosed 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetClosed" rawSetClosed :: Ptr Shape -> CBool-> IO ()
  
  setClosed :: Ptr Shape -> Bool -> IO ()
  setClosed s b = rawSetClosed s (boolToCBool b)
  
  
  -- infinite
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Infinite" rawInfinite :: Ptr Shape -> IO CBool
  
  infinite :: Ptr Shape -> IO Bool
  infinite s = cBoolToBool <$> rawInfinite s
  
  --setInfinite 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetInfinite" rawSetInfinite :: Ptr Shape -> CBool-> IO ()
  
  setInfinite :: Ptr Shape -> Bool -> IO ()
  setInfinite s b = rawSetInfinite s (boolToCBool b)
  
  
  
  -- convex
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Convex" rawConvex :: Ptr Shape -> IO CBool
  
  convex :: Ptr Shape -> IO Bool
  convex s = cBoolToBool <$> rawConvex s
  
  --setConvex 
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_SetConvex" rawSetConvex :: Ptr Shape -> CBool-> IO ()
  
  setConvex :: Ptr Shape -> Bool -> IO ()
  setConvex s b = rawSetConvex s (boolToCBool b)
  
  
  -- move
  --
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Move" move :: Ptr Shape -> Ptr TopLoc.Location -> IO ()
  
  -- moved
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Moved" rawMoved :: Ptr Shape -> Ptr TopLoc.Location -> IO (Ptr Shape)
  
  moved :: Ptr Shape -> Ptr TopLoc.Location -> Acquire (Ptr Shape)
  moved s l = mkAcquire (rawMoved s l) deleteShape
  
  -- nbChildren
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_NbChildren" rawNbChildren :: Ptr Shape -> IO (CInt)
  
  nbChildren :: Ptr Shape -> IO Int
  nbChildren s = fromIntegral <$> rawNbChildren s
  
  -- reverse
  --
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Reverse" reverse :: Ptr Shape -> IO ()
  
  -- reversed
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Reversed" rawReversed :: Ptr Shape -> IO (Ptr Shape)
  
  reversed :: Ptr Shape -> Acquire (Ptr Shape)
  reversed s = mkAcquire (rawReversed s) deleteShape
  
  
  -- complement
  --
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Complement" complement :: Ptr Shape -> IO ()
  
  -- complemented
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_Complemented" rawComplemented :: Ptr Shape -> IO (Ptr Shape)
  
  complemented :: Ptr Shape -> Acquire (Ptr Shape)
  complemented s = mkAcquire (rawComplemented s) deleteShape
  
  -- isEqual
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_IsEqual" rawIsEqual :: Ptr Shape -> Ptr Shape -> IO CBool
  
  isEqual :: Ptr Shape -> Ptr Shape -> IO Bool
  isEqual a b = cBoolToBool <$> rawIsEqual a b
  
  
  -- isSame
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_IsSame" rawIsSame :: Ptr Shape -> Ptr Shape -> IO CBool
  
  isSame :: Ptr Shape -> Ptr Shape -> IO Bool
  isSame a b = cBoolToBool <$> rawIsSame a b
  
  
  -- isPartner
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_IsPartner" rawIsPartner :: Ptr Shape -> Ptr Shape -> IO CBool
  
  isPartner :: Ptr Shape -> Ptr Shape -> IO Bool
  isPartner a b = cBoolToBool <$> rawIsPartner a b
  
  -- isNotEqual
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_IsNotEqual" rawIsNotEqual :: Ptr Shape -> Ptr Shape -> IO CBool
  
  isNotEqual :: Ptr Shape -> Ptr Shape -> IO Bool
  isNotEqual a b = cBoolToBool <$> rawIsNotEqual a b
  
  -- emptyCopy
  --
  
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_EmptyCopy" emptyCopy :: Ptr Shape -> IO ()
  
  -- emptyCopied
  --
  foreign import capi unsafe "hs_TopoDS_Shape.h hs_TopoDS_Shape_EmptyCopied" rawEmptyCopied :: Ptr Shape -> IO (Ptr Shape)
  
  emptyCopied :: Ptr Shape -> Acquire (Ptr Shape)
  emptyCopied s = mkAcquire (rawEmptyCopied s) deleteShape
  