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

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

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

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

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

foreign import ccall "inline_GTS_EDGE_CLASS" c'GTS_EDGE_CLASS
  :: Ptr a -> Ptr C'GtsEdgeClass

{-# LINE 12 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "inline_GTS_EDGE" c'GTS_EDGE
  :: Ptr a -> Ptr C'GtsEdge

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

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

foreign import ccall "gts_edge_class" c'gts_edge_class
  :: IO (Ptr C'GtsEdgeClass)
foreign import ccall "&gts_edge_class" p'gts_edge_class
  :: FunPtr (IO (Ptr C'GtsEdgeClass))

{-# LINE 16 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_new" c'gts_edge_new
  :: Ptr C'GtsEdgeClass -> Ptr C'GtsVertex -> Ptr C'GtsVertex -> IO (Ptr C'GtsEdge)
foreign import ccall "&gts_edge_new" p'gts_edge_new
  :: FunPtr (Ptr C'GtsEdgeClass -> Ptr C'GtsVertex -> Ptr C'GtsVertex -> IO (Ptr C'GtsEdge))

{-# LINE 17 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_replace" c'gts_edge_replace
  :: Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO ()
foreign import ccall "&gts_edge_replace" p'gts_edge_replace
  :: FunPtr (Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO ())

{-# LINE 18 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}

foreign import ccall "inline_gts_edge_is_unattached" c'gts_edge_is_unattached
  :: Ptr C'GtsEdge -> IO C'gboolean

{-# LINE 20 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}

foreign import ccall "gts_edge_is_duplicate" c'gts_edge_is_duplicate
  :: Ptr C'GtsEdge -> IO (Ptr C'GtsEdge)
foreign import ccall "&gts_edge_is_duplicate" p'gts_edge_is_duplicate
  :: FunPtr (Ptr C'GtsEdge -> IO (Ptr C'GtsEdge))

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

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

{-# LINE 24 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_is_boundary" c'gts_edge_is_boundary
  :: Ptr C'GtsEdge -> Ptr C'GtsSurface -> IO (Ptr C'GtsFace)
foreign import ccall "&gts_edge_is_boundary" p'gts_edge_is_boundary
  :: FunPtr (Ptr C'GtsEdge -> Ptr C'GtsSurface -> IO (Ptr C'GtsFace))

{-# LINE 25 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_is_contact" c'gts_edge_is_contact
  :: Ptr C'GtsEdge -> IO C'guint
foreign import ccall "&gts_edge_is_contact" p'gts_edge_is_contact
  :: FunPtr (Ptr C'GtsEdge -> IO C'guint)

{-# LINE 26 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_belongs_to_tetrahedron" c'gts_edge_belongs_to_tetrahedron
  :: Ptr C'GtsEdge -> IO C'gboolean
foreign import ccall "&gts_edge_belongs_to_tetrahedron" p'gts_edge_belongs_to_tetrahedron
  :: FunPtr (Ptr C'GtsEdge -> IO C'gboolean)

{-# LINE 27 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_face_number" c'gts_edge_face_number
  :: Ptr C'GtsEdge -> Ptr C'GtsSurface -> IO C'guint
foreign import ccall "&gts_edge_face_number" p'gts_edge_face_number
  :: FunPtr (Ptr C'GtsEdge -> Ptr C'GtsSurface -> IO C'guint)

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

{-# LINE 29 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_is_encroached" c'gts_edge_is_encroached
  :: Ptr C'GtsEdge -> Ptr C'GtsSurface -> C'GtsEncroachFunc -> C'gpointer -> IO (Ptr C'GtsVertex)
foreign import ccall "&gts_edge_is_encroached" p'gts_edge_is_encroached
  :: FunPtr (Ptr C'GtsEdge -> Ptr C'GtsSurface -> C'GtsEncroachFunc -> C'gpointer -> IO (Ptr C'GtsVertex))

{-# LINE 30 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edges_merge" c'gts_edges_merge
  :: Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&gts_edges_merge" p'gts_edges_merge
  :: FunPtr (Ptr C'GList -> IO (Ptr C'GList))

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

{-# LINE 32 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}
foreign import ccall "gts_edge_swap" c'gts_edge_swap
  :: Ptr C'GtsEdge -> Ptr C'GtsSurface -> IO ()
foreign import ccall "&gts_edge_swap" p'gts_edge_swap
  :: FunPtr (Ptr C'GtsEdge -> Ptr C'GtsSurface -> IO ())

{-# LINE 33 "src/Bindings/Gts/GeometricalObjectHierarchy/Edges.hsc" #-}