{-# LINE 1 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}

{-# LINE 2 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}

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

module Bindings.Gts.ProgressiveAndHierarchicalSurfaces.ProgressiveSurfaces 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 9 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}

foreign import ccall "inline_GTS_PSURFACE_CLASS" c'GTS_PSURFACE_CLASS
  :: Ptr a -> Ptr C'GtsPSurfaceClass

{-# LINE 11 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "inline_GTS_PSURFACE" c'GTS_PSURFACE
  :: Ptr a -> Ptr C'GtsPSurface

{-# LINE 12 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "inline_GTS_IS_PSURFACE" c'GTS_IS_PSURFACE
  :: Ptr a -> Ptr C'gboolean

{-# LINE 13 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}

foreign import ccall "inline_GTS_PSURFACE_IS_CLOSED" c'GTS_PSURFACE_IS_CLOSED
  :: Ptr C'GtsPSurface -> IO (Ptr C'gboolean)

{-# LINE 15 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}

foreign import ccall "gts_psurface_class" c'gts_psurface_class
  :: IO (Ptr C'GtsPSurfaceClass)
foreign import ccall "&gts_psurface_class" p'gts_psurface_class
  :: FunPtr (IO (Ptr C'GtsPSurfaceClass))

{-# LINE 17 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_new" c'gts_psurface_new
  :: Ptr C'GtsPSurfaceClass -> Ptr C'GtsSurface -> Ptr C'GtsSplitClass -> C'GtsKeyFunc -> C'gpointer -> C'GtsCoarsenFunc -> C'gpointer -> C'GtsStopFunc -> C'gpointer -> C'gdouble -> IO (Ptr C'GtsPSurface)
foreign import ccall "&gts_psurface_new" p'gts_psurface_new
  :: FunPtr (Ptr C'GtsPSurfaceClass -> Ptr C'GtsSurface -> Ptr C'GtsSplitClass -> C'GtsKeyFunc -> C'gpointer -> C'GtsCoarsenFunc -> C'gpointer -> C'GtsStopFunc -> C'gpointer -> C'gdouble -> IO (Ptr C'GtsPSurface))

{-# LINE 18 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_add_vertex" c'gts_psurface_add_vertex
  :: Ptr C'GtsPSurface -> IO (Ptr C'GtsSplit)
foreign import ccall "&gts_psurface_add_vertex" p'gts_psurface_add_vertex
  :: FunPtr (Ptr C'GtsPSurface -> IO (Ptr C'GtsSplit))

{-# LINE 19 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_remove_vertex" c'gts_psurface_remove_vertex
  :: Ptr C'GtsPSurface -> IO (Ptr C'GtsSplit)
foreign import ccall "&gts_psurface_remove_vertex" p'gts_psurface_remove_vertex
  :: FunPtr (Ptr C'GtsPSurface -> IO (Ptr C'GtsSplit))

{-# LINE 20 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_set_vertex_number" c'gts_psurface_set_vertex_number
  :: Ptr C'GtsPSurface -> C'guint -> IO ()
foreign import ccall "&gts_psurface_set_vertex_number" p'gts_psurface_set_vertex_number
  :: FunPtr (Ptr C'GtsPSurface -> C'guint -> IO ())

{-# LINE 21 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_get_vertex_number" c'gts_psurface_get_vertex_number
  :: Ptr C'GtsPSurface -> IO C'guint
foreign import ccall "&gts_psurface_get_vertex_number" p'gts_psurface_get_vertex_number
  :: FunPtr (Ptr C'GtsPSurface -> IO C'guint)

{-# LINE 22 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_min_vertex_number" c'gts_psurface_min_vertex_number
  :: Ptr C'GtsPSurface -> IO C'guint
foreign import ccall "&gts_psurface_min_vertex_number" p'gts_psurface_min_vertex_number
  :: FunPtr (Ptr C'GtsPSurface -> IO C'guint)

{-# LINE 23 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_max_vertex_number" c'gts_psurface_max_vertex_number
  :: Ptr C'GtsPSurface -> IO C'guint
foreign import ccall "&gts_psurface_max_vertex_number" p'gts_psurface_max_vertex_number
  :: FunPtr (Ptr C'GtsPSurface -> IO C'guint)

{-# LINE 24 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_foreach_vertex" c'gts_psurface_foreach_vertex
  :: Ptr C'GtsPSurface -> C'GtsFunc -> C'gpointer -> IO ()
foreign import ccall "&gts_psurface_foreach_vertex" p'gts_psurface_foreach_vertex
  :: FunPtr (Ptr C'GtsPSurface -> C'GtsFunc -> C'gpointer -> IO ())

{-# LINE 25 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_open" c'gts_psurface_open
  :: Ptr C'GtsPSurfaceClass -> Ptr C'GtsSurface -> Ptr C'GtsSplitClass -> Ptr C'GtsFile -> IO (Ptr C'GtsPSurface)
foreign import ccall "&gts_psurface_open" p'gts_psurface_open
  :: FunPtr (Ptr C'GtsPSurfaceClass -> Ptr C'GtsSurface -> Ptr C'GtsSplitClass -> Ptr C'GtsFile -> IO (Ptr C'GtsPSurface))

{-# LINE 26 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_read_vertex" c'gts_psurface_read_vertex
  :: Ptr C'GtsPSurface -> Ptr C'GtsFile -> IO (Ptr C'GtsSplit)
foreign import ccall "&gts_psurface_read_vertex" p'gts_psurface_read_vertex
  :: FunPtr (Ptr C'GtsPSurface -> Ptr C'GtsFile -> IO (Ptr C'GtsSplit))

{-# LINE 27 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_close" c'gts_psurface_close
  :: Ptr C'GtsPSurface -> IO ()
foreign import ccall "&gts_psurface_close" p'gts_psurface_close
  :: FunPtr (Ptr C'GtsPSurface -> IO ())

{-# LINE 28 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}
foreign import ccall "gts_psurface_write" c'gts_psurface_write
  :: Ptr C'GtsPSurface -> Ptr CFile -> IO ()
foreign import ccall "&gts_psurface_write" p'gts_psurface_write
  :: FunPtr (Ptr C'GtsPSurface -> Ptr CFile -> IO ())

{-# LINE 29 "src/Bindings/Gts/ProgressiveAndHierarchicalSurfaces/ProgressiveSurfaces.hsc" #-}