{-# LINE 1 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}

{-# LINE 2 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}

{-# LINE 3 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-boolean-operations.html>

module Bindings.Gts.SurfaceOperations.BooleanOperations where
import Bindings.GLib
import Bindings.Gts.Types
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 10 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}

foreign import ccall "inline_GTS_SURFACE_INTER_CLASS" c'GTS_SURFACE_INTER_CLASS
  :: Ptr a -> Ptr C'GtsSurfaceInterClass

{-# LINE 12 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}
foreign import ccall "inline_GTS_SURFACE_INTER" c'GTS_SURFACE_INTER
  :: Ptr a -> Ptr C'GtsSurfaceInter

{-# LINE 13 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}
foreign import ccall "inline_GTS_IS_SURFACE_INTER" c'GTS_IS_SURFACE_INTER
  :: Ptr a -> Ptr C'gboolean

{-# LINE 14 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}

foreign import ccall "gts_surface_intersection" c'gts_surface_intersection
  :: Ptr C'GtsSurface -> Ptr C'GtsSurface -> Ptr C'GNode -> Ptr C'GNode -> IO (Ptr C'GSList)
foreign import ccall "&gts_surface_intersection" p'gts_surface_intersection
  :: FunPtr (Ptr C'GtsSurface -> Ptr C'GtsSurface -> Ptr C'GNode -> Ptr C'GNode -> IO (Ptr C'GSList))

{-# LINE 16 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}
foreign import ccall "gts_surface_inter_class" c'gts_surface_inter_class
  :: IO (Ptr C'GtsSurfaceInterClass)
foreign import ccall "&gts_surface_inter_class" p'gts_surface_inter_class
  :: FunPtr (IO (Ptr C'GtsSurfaceInterClass))

{-# LINE 17 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}
foreign import ccall "gts_surface_inter_new" c'gts_surface_inter_new
  :: Ptr C'GtsSurfaceInterClass -> Ptr C'GtsSurface -> Ptr C'GtsSurface -> Ptr C'GNode -> Ptr C'GNode -> C'gboolean -> C'gboolean -> IO (Ptr C'GtsSurfaceInter)
foreign import ccall "&gts_surface_inter_new" p'gts_surface_inter_new
  :: FunPtr (Ptr C'GtsSurfaceInterClass -> Ptr C'GtsSurface -> Ptr C'GtsSurface -> Ptr C'GNode -> Ptr C'GNode -> C'gboolean -> C'gboolean -> IO (Ptr C'GtsSurfaceInter))

{-# LINE 18 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}
foreign import ccall "gts_surface_inter_check" c'gts_surface_inter_check
  :: Ptr C'GtsSurfaceInter -> Ptr C'gboolean -> IO C'gboolean
foreign import ccall "&gts_surface_inter_check" p'gts_surface_inter_check
  :: FunPtr (Ptr C'GtsSurfaceInter -> Ptr C'gboolean -> IO C'gboolean)

{-# LINE 19 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}

foreign import ccall "gts_surface_inter_boolean" c'gts_surface_inter_boolean
  :: Ptr C'GtsSurfaceInter -> Ptr C'GtsSurface -> C'GtsBooleanOperation -> IO ()
foreign import ccall "&gts_surface_inter_boolean" p'gts_surface_inter_boolean
  :: FunPtr (Ptr C'GtsSurfaceInter -> Ptr C'GtsSurface -> C'GtsBooleanOperation -> IO ())

{-# LINE 21 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}
foreign import ccall "gts_surface_is_self_intersecting" c'gts_surface_is_self_intersecting
  :: Ptr C'GtsSurface -> IO (Ptr C'GtsSurface)
foreign import ccall "&gts_surface_is_self_intersecting" p'gts_surface_is_self_intersecting
  :: FunPtr (Ptr C'GtsSurface -> IO (Ptr C'GtsSurface))

{-# LINE 22 "src/Bindings/Gts/SurfaceOperations/BooleanOperations.hsc" #-}