{-# LINE 1 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}

{-# LINE 2 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}

{-# LINE 3 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}

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

module Bindings.Gts.GeometricalObjectHierarchy.Faces 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/GeometricalObjectHierarchy/Faces.hsc" #-}

foreign import ccall "inline_GTS_FACE_CLASS" c'GTS_FACE_CLASS
  :: Ptr a -> Ptr C'GtsFaceClass

{-# LINE 12 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "inline_GTS_FACE" c'GTS_FACE
  :: Ptr a -> Ptr C'GtsFace

{-# LINE 13 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "inline_GTS_IS_FACE" c'GTS_IS_FACE
  :: Ptr a -> Ptr C'gboolean

{-# LINE 14 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}

foreign import ccall "gts_face_class" c'gts_face_class
  :: IO (Ptr C'GtsFaceClass)
foreign import ccall "&gts_face_class" p'gts_face_class
  :: FunPtr (IO (Ptr C'GtsFaceClass))

{-# LINE 16 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_face_new" c'gts_face_new
  :: Ptr C'GtsFaceClass -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO (Ptr C'GtsFace)
foreign import ccall "&gts_face_new" p'gts_face_new
  :: FunPtr (Ptr C'GtsFaceClass -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO (Ptr C'GtsFace))

{-# LINE 17 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_face_has_parent_surface" c'gts_face_has_parent_surface
  :: Ptr C'GtsFace -> Ptr C'GtsSurface -> IO C'gboolean
foreign import ccall "&gts_face_has_parent_surface" p'gts_face_has_parent_surface
  :: FunPtr (Ptr C'GtsFace -> Ptr C'GtsSurface -> IO C'gboolean)

{-# LINE 18 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_face_neighbor_number" c'gts_face_neighbor_number
  :: Ptr C'GtsFace -> Ptr C'GtsSurface -> IO C'guint
foreign import ccall "&gts_face_neighbor_number" p'gts_face_neighbor_number
  :: FunPtr (Ptr C'GtsFace -> Ptr C'GtsSurface -> IO C'guint)

{-# LINE 19 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_face_neighbors" c'gts_face_neighbors
  :: Ptr C'GtsFace -> Ptr C'GtsSurface -> IO (Ptr C'GSList)
foreign import ccall "&gts_face_neighbors" p'gts_face_neighbors
  :: FunPtr (Ptr C'GtsFace -> Ptr C'GtsSurface -> IO (Ptr C'GSList))

{-# LINE 20 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_face_foreach_neighbor" c'gts_face_foreach_neighbor
  :: Ptr C'GtsFace -> Ptr C'GtsSurface -> C'GtsFunc -> C'gpointer -> IO ()
foreign import ccall "&gts_face_foreach_neighbor" p'gts_face_foreach_neighbor
  :: FunPtr (Ptr C'GtsFace -> Ptr C'GtsSurface -> C'GtsFunc -> C'gpointer -> IO ())

{-# LINE 21 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_face_is_compatible" c'gts_face_is_compatible
  :: Ptr C'GtsFace -> Ptr C'GtsSurface -> IO C'gboolean
foreign import ccall "&gts_face_is_compatible" p'gts_face_is_compatible
  :: FunPtr (Ptr C'GtsFace -> Ptr C'GtsSurface -> IO C'gboolean)

{-# LINE 22 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}
foreign import ccall "gts_faces_from_edges" c'gts_faces_from_edges
  :: Ptr C'GSList -> Ptr C'GtsSurface -> IO (Ptr C'GSList)
foreign import ccall "&gts_faces_from_edges" p'gts_faces_from_edges
  :: FunPtr (Ptr C'GSList -> Ptr C'GtsSurface -> IO (Ptr C'GSList))

{-# LINE 23 "src/Bindings/Gts/GeometricalObjectHierarchy/Faces.hsc" #-}