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

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

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

-- | GTS types appear together in the same module because of circular dependencies.

module Bindings.Gts.Types where
import Bindings.GLib
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/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-binary-heaps.html#GTSHEAP>

data C'GtsHeap = C'GtsHeap

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

-- | <http://gts.sourceforge.net/reference/gts-extended-binary-heaps.html#GTSEHEAPPAIR>

data C'GtsEHeapPair = C'GtsEHeapPair{
{-# LINE 17 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsEHeapPair'data :: C'gpointer
{-# LINE 18 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsEHeapPair'key :: C'gdouble
{-# LINE 19 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsEHeapPair'pos :: C'guint
{-# LINE 20 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsEHeapPair where
  sizeOf _ = 16
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 12
    return $ C'GtsEHeapPair v0 v1 v2
  poke p (C'GtsEHeapPair v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 12 v2
    return ()

{-# LINE 21 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-extended-binary-heaps.html#GTSKEYFUNC>

type C'GtsKeyFunc = FunPtr (C'gpointer -> C'gpointer -> IO C'gdouble)
foreign import ccall "wrapper" mk'GtsKeyFunc
  :: (C'gpointer -> C'gpointer -> IO C'gdouble) -> IO C'GtsKeyFunc
foreign import ccall "dynamic" mK'GtsKeyFunc
  :: C'GtsKeyFunc -> (C'gpointer -> C'gpointer -> IO C'gdouble)

{-# LINE 25 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-extended-binary-heaps.html#GTSEHEAP>

data C'GtsEHeap = C'GtsEHeap

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

-- | <http://gts.sourceforge.net/reference/gts-first-in-first-out-heaps.html#GTSFIFO>

data C'GtsFifo = C'GtsFifo

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

-- | <http://gts.sourceforge.net/reference/gts-vectors-and-matrices.html#GTSMATRIX>

data C'GtsMatrix = C'GtsMatrix

{-# LINE 37 "src/Bindings/Gts/Types.hsc" #-}
type C'GtsVector = Ptr C'gdouble

{-# LINE 38 "src/Bindings/Gts/Types.hsc" #-}
type C'GtsVector4 = Ptr C'gdouble

{-# LINE 39 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-simple-statistics.html#GTSRANGE>

data C'GtsRange = C'GtsRange{
{-# LINE 43 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsRange'min :: C'gdouble
{-# LINE 44 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsRange'max :: C'gdouble
{-# LINE 45 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsRange'sum :: C'gdouble
{-# LINE 46 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsRange'sum2 :: C'gdouble
{-# LINE 47 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsRange'mean :: C'gdouble
{-# LINE 48 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsRange'stddev :: C'gdouble
{-# LINE 49 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsRange'n :: C'guint
{-# LINE 50 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsRange where
  sizeOf _ = 52
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 24
    v4 <- peekByteOff p 32
    v5 <- peekByteOff p 40
    v6 <- peekByteOff p 48
    return $ C'GtsRange v0 v1 v2 v3 v4 v5 v6
  poke p (C'GtsRange v0 v1 v2 v3 v4 v5 v6) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    pokeByteOff p 24 v3
    pokeByteOff p 32 v4
    pokeByteOff p 40 v5
    pokeByteOff p 48 v6
    return ()

{-# LINE 51 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-miscellaneous-macros-and-functions.html#GTSFILE>

data C'GtsFile = C'GtsFile{
{-# LINE 55 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsFile'fp :: Ptr CFile
{-# LINE 56 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile's :: Ptr C'gchar
{-# LINE 57 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile's1 :: Ptr C'gchar
{-# LINE 58 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'line :: C'guint
{-# LINE 59 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'pos :: C'guint
{-# LINE 60 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'token :: Ptr C'GString
{-# LINE 61 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'type :: C'GtsTokenType
{-# LINE 62 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'error :: Ptr C'gchar
{-# LINE 63 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'curline :: C'guint
{-# LINE 64 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'curpos :: C'guint
{-# LINE 65 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'scope :: C'guint
{-# LINE 66 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'scope_max :: C'guint
{-# LINE 67 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'next_token :: C'gint
{-# LINE 68 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'delimiters :: Ptr C'gchar
{-# LINE 69 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'comments :: Ptr C'gchar
{-# LINE 70 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFile'tokens :: Ptr C'gchar
{-# LINE 71 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsFile where
  sizeOf _ = 64
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 12
    v4 <- peekByteOff p 16
    v5 <- peekByteOff p 20
    v6 <- peekByteOff p 24
    v7 <- peekByteOff p 28
    v8 <- peekByteOff p 32
    v9 <- peekByteOff p 36
    v10 <- peekByteOff p 40
    v11 <- peekByteOff p 44
    v12 <- peekByteOff p 48
    v13 <- peekByteOff p 52
    v14 <- peekByteOff p 56
    v15 <- peekByteOff p 60
    return $ C'GtsFile v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15
  poke p (C'GtsFile v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 12 v3
    pokeByteOff p 16 v4
    pokeByteOff p 20 v5
    pokeByteOff p 24 v6
    pokeByteOff p 28 v7
    pokeByteOff p 32 v8
    pokeByteOff p 36 v9
    pokeByteOff p 40 v10
    pokeByteOff p 44 v11
    pokeByteOff p 48 v12
    pokeByteOff p 52 v13
    pokeByteOff p 56 v14
    pokeByteOff p 60 v15
    return ()

{-# LINE 72 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-miscellaneous-macros-and-functions.html#GTSTOKENTYPE>

type C'GtsTokenType = CUInt

{-# LINE 76 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_NONE = 256
c'GTS_NONE :: (Num a) => a

{-# LINE 77 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_INT = 512
c'GTS_INT :: (Num a) => a

{-# LINE 78 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_UINT = 1024
c'GTS_UINT :: (Num a) => a

{-# LINE 79 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_FLOAT = 2048
c'GTS_FLOAT :: (Num a) => a

{-# LINE 80 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_DOUBLE = 4096
c'GTS_DOUBLE :: (Num a) => a

{-# LINE 81 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_STRING = 8192
c'GTS_STRING :: (Num a) => a

{-# LINE 82 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_FILE = 16384
c'GTS_FILE :: (Num a) => a

{-# LINE 83 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_ERROR = 32768
c'GTS_ERROR :: (Num a) => a

{-# LINE 84 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-miscellaneous-macros-and-functions.html#GTSFILEVARIABLE>

data C'GtsFileVariable = C'GtsFileVariable{
{-# LINE 88 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsFileVariable'type :: C'GtsTokenType
{-# LINE 89 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFileVariable'name :: [C'gchar]
{-# LINE 90 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFileVariable'unique :: C'gboolean
{-# LINE 91 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFileVariable'data :: C'gpointer
{-# LINE 92 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFileVariable'set :: C'gboolean
{-# LINE 93 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFileVariable'line :: C'guint
{-# LINE 94 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFileVariable'pos :: C'guint
{-# LINE 95 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsFileVariable where
  sizeOf _ = 56
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekArray 30 (plusPtr p 4)
    v2 <- peekByteOff p 36
    v3 <- peekByteOff p 40
    v4 <- peekByteOff p 44
    v5 <- peekByteOff p 48
    v6 <- peekByteOff p 52
    return $ C'GtsFileVariable v0 v1 v2 v3 v4 v5 v6
  poke p (C'GtsFileVariable v0 v1 v2 v3 v4 v5 v6) = do
    pokeByteOff p 0 v0
    pokeArray (plusPtr p 4) (take 30 v1)
    pokeByteOff p 36 v2
    pokeByteOff p 40 v3
    pokeByteOff p 44 v4
    pokeByteOff p 48 v5
    pokeByteOff p 52 v6
    return ()

{-# LINE 96 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSOBJECTCLASS>

data C'GtsObjectClass = C'GtsObjectClass{
{-# LINE 100 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsObjectClass'info :: C'GtsObjectClassInfo
{-# LINE 101 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'parent_class :: Ptr C'GtsObjectClass
{-# LINE 102 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'clone :: FunPtr (Ptr C'GtsObject -> Ptr C'GtsObject -> IO ())
{-# LINE 103 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'destroy :: FunPtr (Ptr C'GtsObject -> IO ())
{-# LINE 104 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'read :: FunPtr (Ptr (Ptr C'GtsObject) -> Ptr C'GtsFile -> IO ())
{-# LINE 105 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'write :: FunPtr (Ptr C'GtsObject -> Ptr CFile -> IO ())
{-# LINE 106 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'color :: FunPtr (Ptr C'GtsObject -> IO C'GtsColor)
{-# LINE 107 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClass'attributes :: FunPtr (Ptr C'GtsObject -> Ptr C'GtsObject -> IO ())
{-# LINE 108 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsObjectClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 64
    v2 <- peekByteOff p 68
    v3 <- peekByteOff p 72
    v4 <- peekByteOff p 76
    v5 <- peekByteOff p 80
    v6 <- peekByteOff p 84
    v7 <- peekByteOff p 88
    return $ C'GtsObjectClass v0 v1 v2 v3 v4 v5 v6 v7
  poke p (C'GtsObjectClass v0 v1 v2 v3 v4 v5 v6 v7) = do
    pokeByteOff p 0 v0
    pokeByteOff p 64 v1
    pokeByteOff p 68 v2
    pokeByteOff p 72 v3
    pokeByteOff p 76 v4
    pokeByteOff p 80 v5
    pokeByteOff p 84 v6
    pokeByteOff p 88 v7
    return ()

{-# LINE 109 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSOBJECT>

data C'GtsObject = C'GtsObject{
{-# LINE 113 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsObject'klass :: Ptr C'GtsObjectClass
{-# LINE 114 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObject'reserved :: C'gpointer
{-# LINE 115 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObject'flags :: C'guint32
{-# LINE 116 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsObject where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GtsObject v0 v1 v2
  poke p (C'GtsObject v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 117 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSOBJECTCLASSINFO>

data C'GtsObjectClassInfo = C'GtsObjectClassInfo{
{-# LINE 121 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsObjectClassInfo'name :: [C'gchar]
{-# LINE 122 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClassInfo'object_size :: C'guint
{-# LINE 123 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClassInfo'class_size :: C'guint
{-# LINE 124 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClassInfo'class_init_func :: C'GtsObjectClassInitFunc
{-# LINE 125 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClassInfo'object_init_func :: C'GtsObjectInitFunc
{-# LINE 126 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsObjectClassInfo'arg_set_func :: C'GtsArgSetFunc
{-# LINE 127 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsObjectClassInfo where
  sizeOf _ = 64
  alignment = sizeOf
  peek p = do
    v0 <- peekArray 40 (plusPtr p 0)
    v1 <- peekByteOff p 40
    v2 <- peekByteOff p 44
    v3 <- peekByteOff p 48
    v4 <- peekByteOff p 52
    v5 <- peekByteOff p 56
    return $ C'GtsObjectClassInfo v0 v1 v2 v3 v4 v5
  poke p (C'GtsObjectClassInfo v0 v1 v2 v3 v4 v5) = do
    pokeArray (plusPtr p 0) (take 40 v0)
    pokeByteOff p 40 v1
    pokeByteOff p 44 v2
    pokeByteOff p 48 v3
    pokeByteOff p 52 v4
    pokeByteOff p 56 v5
    return ()

{-# LINE 128 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSOBJECTCLASSINITFUNC>

type C'GtsObjectClassInitFunc = FunPtr (Ptr C'GtsObjectClass -> IO ())
foreign import ccall "wrapper" mk'GtsObjectClassInitFunc
  :: (Ptr C'GtsObjectClass -> IO ()) -> IO C'GtsObjectClassInitFunc
foreign import ccall "dynamic" mK'GtsObjectClassInitFunc
  :: C'GtsObjectClassInitFunc -> (Ptr C'GtsObjectClass -> IO ())

{-# LINE 132 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSOBJECTINITFUNC>

type C'GtsObjectInitFunc = FunPtr (Ptr C'GtsObject -> IO ())
foreign import ccall "wrapper" mk'GtsObjectInitFunc
  :: (Ptr C'GtsObject -> IO ()) -> IO C'GtsObjectInitFunc
foreign import ccall "dynamic" mK'GtsObjectInitFunc
  :: C'GtsObjectInitFunc -> (Ptr C'GtsObject -> IO ())

{-# LINE 136 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSARGSETFUNC>

type C'GtsArgSetFunc = FunPtr (Ptr C'GtsObject -> IO ())
foreign import ccall "wrapper" mk'GtsArgSetFunc
  :: (Ptr C'GtsObject -> IO ()) -> IO C'GtsArgSetFunc
foreign import ccall "dynamic" mK'GtsArgSetFunc
  :: C'GtsArgSetFunc -> (Ptr C'GtsObject -> IO ())

{-# LINE 140 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSARGGETFUNC>

type C'GtsArgGetFunc = FunPtr (Ptr C'GtsObject -> IO ())
foreign import ccall "wrapper" mk'GtsArgGetFunc
  :: (Ptr C'GtsObject -> IO ()) -> IO C'GtsArgGetFunc
foreign import ccall "dynamic" mK'GtsArgGetFunc
  :: C'GtsArgGetFunc -> (Ptr C'GtsObject -> IO ())

{-# LINE 144 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSOBJECTFLAGS>

type C'GtsObjectFlags = CUInt

{-# LINE 148 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_DESTROYED = 1
c'GTS_DESTROYED :: (Num a) => a

{-# LINE 149 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_USER_FLAG = 1
c'GTS_USER_FLAG :: (Num a) => a

{-# LINE 150 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-object-class.html#GTSCOLOR>

data C'GtsColor = C'GtsColor{
{-# LINE 154 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsColor'r :: C'gfloat
{-# LINE 155 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsColor'g :: C'gfloat
{-# LINE 156 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsColor'b :: C'gfloat
{-# LINE 157 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsColor where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GtsColor v0 v1 v2
  poke p (C'GtsColor v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 158 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-container-classes.html#GTSCONTAINERCLASS>

data C'GtsContainerClass = C'GtsContainerClass{
{-# LINE 162 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsContainerClass'parent_class :: C'GtsSListContaineeClass
{-# LINE 163 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContainerClass'add :: FunPtr (Ptr C'GtsContainer -> Ptr C'GtsContainee -> IO ())
{-# LINE 164 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContainerClass'remove :: FunPtr (Ptr C'GtsContainer -> Ptr C'GtsContainee -> IO ())
{-# LINE 165 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContainerClass'foreach :: FunPtr (Ptr C'GtsContainer -> C'GtsFunc -> C'gpointer -> IO ())
{-# LINE 166 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContainerClass'size :: FunPtr (Ptr C'GtsContainer -> IO C'guint)
{-# LINE 167 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsContainerClass where
  sizeOf _ = 128
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 112
    v2 <- peekByteOff p 116
    v3 <- peekByteOff p 120
    v4 <- peekByteOff p 124
    return $ C'GtsContainerClass v0 v1 v2 v3 v4
  poke p (C'GtsContainerClass v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 112 v1
    pokeByteOff p 116 v2
    pokeByteOff p 120 v3
    pokeByteOff p 124 v4
    return ()

{-# LINE 168 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-container-classes.html#GTSCONTAINER>

data C'GtsContainer = C'GtsContainer{
{-# LINE 172 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsContainer'object :: C'GtsSListContainee
{-# LINE 173 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsContainer where
  sizeOf _ = 16
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsContainer v0
  poke p (C'GtsContainer v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 174 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-container-classes.html#GTSHASHCONTAINERCLASS>

data C'GtsHashContainerClass = C'GtsHashContainerClass{
{-# LINE 178 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsHashContainerClass'parent_class :: C'GtsContainerClass
{-# LINE 179 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsHashContainerClass where
  sizeOf _ = 128
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsHashContainerClass v0
  poke p (C'GtsHashContainerClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 180 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-container-classes.html#GTSHASHCONTAINER>

data C'GtsHashContainer = C'GtsHashContainer{
{-# LINE 184 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsHashContainer'c :: C'GtsContainer
{-# LINE 185 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHashContainer'items :: Ptr C'GHashTable
{-# LINE 186 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHashContainer'frozen :: C'gboolean
{-# LINE 187 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsHashContainer where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 16
    v2 <- peekByteOff p 20
    return $ C'GtsHashContainer v0 v1 v2
  poke p (C'GtsHashContainer v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 16 v1
    pokeByteOff p 20 v2
    return ()

{-# LINE 188 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-container-classes.html#GTSSLISTCONTAINERCLASS>

data C'GtsSListContainerClass = C'GtsSListContainerClass{
{-# LINE 192 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSListContainerClass'parent_class :: C'GtsContainerClass
{-# LINE 193 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSListContainerClass where
  sizeOf _ = 128
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsSListContainerClass v0
  poke p (C'GtsSListContainerClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 194 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-container-classes.html#GTSSLISTCONTAINER>

data C'GtsSListContainer = C'GtsSListContainer{
{-# LINE 198 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSListContainer'c :: C'GtsContainer
{-# LINE 199 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSListContainer'items :: Ptr C'GSList
{-# LINE 200 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSListContainer'frozen :: C'gboolean
{-# LINE 201 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSListContainer where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 16
    v2 <- peekByteOff p 20
    return $ C'GtsSListContainer v0 v1 v2
  poke p (C'GtsSListContainer v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 16 v1
    pokeByteOff p 20 v2
    return ()

{-# LINE 202 "src/Bindings/Gts/Types.hsc" #-}


-- | <http://gts.sourceforge.net/reference/gts-containee-classes.html#GTSCONTAINEECLASS>

data C'GtsContaineeClass = C'GtsContaineeClass{
{-# LINE 207 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsContaineeClass'parent_class :: C'GtsObjectClass
{-# LINE 208 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContaineeClass'add_container :: FunPtr (Ptr C'GtsContainee -> Ptr C'GtsContainer -> IO ())
{-# LINE 209 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContaineeClass'remove_container :: FunPtr (Ptr C'GtsContainee -> Ptr C'GtsContainer -> IO ())
{-# LINE 210 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContaineeClass'foreach :: FunPtr (Ptr C'GtsContainee -> C'GtsFunc -> C'gpointer -> IO ())
{-# LINE 211 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContaineeClass'is_contained :: FunPtr (Ptr C'GtsContainee -> Ptr C'GtsContainer -> IO C'gboolean)
{-# LINE 212 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsContaineeClass'replace :: FunPtr (Ptr C'GtsContainee -> Ptr C'GtsContainee -> IO ())
{-# LINE 213 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsContaineeClass where
  sizeOf _ = 112
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 92
    v2 <- peekByteOff p 96
    v3 <- peekByteOff p 100
    v4 <- peekByteOff p 104
    v5 <- peekByteOff p 108
    return $ C'GtsContaineeClass v0 v1 v2 v3 v4 v5
  poke p (C'GtsContaineeClass v0 v1 v2 v3 v4 v5) = do
    pokeByteOff p 0 v0
    pokeByteOff p 92 v1
    pokeByteOff p 96 v2
    pokeByteOff p 100 v3
    pokeByteOff p 104 v4
    pokeByteOff p 108 v5
    return ()

{-# LINE 214 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-containee-classes.html#GTSCONTAINEE>

data C'GtsContainee = C'GtsContainee{
{-# LINE 218 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsContainee'object :: C'GtsObject
{-# LINE 219 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsContainee where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsContainee v0
  poke p (C'GtsContainee v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 220 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-containee-classes.html#GTSSLISTCONTAINEECLASS>

data C'GtsSListContaineeClass = C'GtsSListContaineeClass{
{-# LINE 224 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSListContaineeClass'parent_class :: C'GtsContaineeClass
{-# LINE 225 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSListContaineeClass where
  sizeOf _ = 112
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsSListContaineeClass v0
  poke p (C'GtsSListContaineeClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 226 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-containee-classes.html#GTSSLISTCONTAINEE>

data C'GtsSListContainee = C'GtsSListContainee{
{-# LINE 230 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSListContainee'containee :: C'GtsContainee
{-# LINE 231 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSListContainee'containers :: Ptr C'GSList
{-# LINE 232 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSListContainee where
  sizeOf _ = 16
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    return $ C'GtsSListContainee v0 v1
  poke p (C'GtsSListContainee v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    return ()

{-# LINE 233 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-points.html#GTSPOINTCLASS>

data C'GtsPointClass = C'GtsPointClass{
{-# LINE 237 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsPointClass'parent_class :: C'GtsObjectClass
{-# LINE 238 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPointClass'binary :: C'gboolean
{-# LINE 239 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsPointClass where
  sizeOf _ = 96
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 92
    return $ C'GtsPointClass v0 v1
  poke p (C'GtsPointClass v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 92 v1
    return ()

{-# LINE 240 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-points.html#GTSPOINT>

data C'GtsPoint = C'GtsPoint{
{-# LINE 244 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsPoint'object :: C'GtsObject
{-# LINE 245 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPoint'x :: C'gdouble
{-# LINE 246 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPoint'y :: C'gdouble
{-# LINE 247 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPoint'z :: C'gdouble
{-# LINE 248 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsPoint where
  sizeOf _ = 36
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 20
    v3 <- peekByteOff p 28
    return $ C'GtsPoint v0 v1 v2 v3
  poke p (C'GtsPoint v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 20 v2
    pokeByteOff p 28 v3
    return ()

{-# LINE 249 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-points.html#GTSINTERSECT>

type C'GtsIntersect = CInt

{-# LINE 253 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_OUT = -1
c'GTS_OUT :: (Num a) => a

{-# LINE 254 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_ON = 0
c'GTS_ON :: (Num a) => a

{-# LINE 255 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_IN = 1
c'GTS_IN :: (Num a) => a

{-# LINE 256 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-vertices.html#GTSVERTEXCLASS>

data C'GtsVertexClass = C'GtsVertexClass{
{-# LINE 260 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsVertexClass'parent_class :: C'GtsPointClass
{-# LINE 261 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsVertexClass'intersection_attributes :: FunPtr (Ptr C'GtsVertex -> Ptr C'GtsObject -> Ptr C'GtsObject -> IO ())
{-# LINE 262 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsVertexClass where
  sizeOf _ = 100
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 96
    return $ C'GtsVertexClass v0 v1
  poke p (C'GtsVertexClass v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 96 v1
    return ()

{-# LINE 263 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-vertices.html#GTSVERTEX>

data C'GtsVertex = C'GtsVertex{
{-# LINE 267 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsVertex'p :: C'GtsPoint
{-# LINE 268 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsVertex'segments :: Ptr C'GSList
{-# LINE 269 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsVertex where
  sizeOf _ = 40
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 36
    return $ C'GtsVertex v0 v1
  poke p (C'GtsVertex v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 36 v1
    return ()

{-# LINE 270 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-segments.html#GTSSEGMENTCLASS>

data C'GtsSegmentClass = C'GtsSegmentClass{
{-# LINE 274 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSegmentClass'parent_class :: C'GtsObjectClass
{-# LINE 275 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSegmentClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsSegmentClass v0
  poke p (C'GtsSegmentClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 276 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-segments.html#GTSSEGMENT>

data C'GtsSegment = C'GtsSegment{
{-# LINE 280 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSegment'object :: C'GtsObject
{-# LINE 281 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSegment'v1 :: Ptr C'GtsVertex
{-# LINE 282 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSegment'v2 :: Ptr C'GtsVertex
{-# LINE 283 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSegment where
  sizeOf _ = 20
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    return $ C'GtsSegment v0 v1 v2
  poke p (C'GtsSegment v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    return ()

{-# LINE 284 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsEdgeClass = C'GtsEdgeClass{
{-# LINE 288 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsEdgeClass'parent_class :: C'GtsSegmentClass
{-# LINE 289 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsEdgeClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsEdgeClass v0
  poke p (C'GtsEdgeClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 290 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsEdge = C'GtsEdge{
{-# LINE 294 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsEdge'segment :: C'GtsSegment
{-# LINE 295 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsEdge'triangles :: Ptr C'GSList
{-# LINE 296 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsEdge where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 20
    return $ C'GtsEdge v0 v1
  poke p (C'GtsEdge v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 20 v1
    return ()

{-# LINE 297 "src/Bindings/Gts/Types.hsc" #-}

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

type C'GtsEncroachFunc = FunPtr (Ptr C'GtsVertex -> Ptr C'GtsEdge -> Ptr C'GtsSurface -> C'gpointer -> IO C'gboolean)
foreign import ccall "wrapper" mk'GtsEncroachFunc
  :: (Ptr C'GtsVertex -> Ptr C'GtsEdge -> Ptr C'GtsSurface -> C'gpointer -> IO C'gboolean) -> IO C'GtsEncroachFunc
foreign import ccall "dynamic" mK'GtsEncroachFunc
  :: C'GtsEncroachFunc -> (Ptr C'GtsVertex -> Ptr C'GtsEdge -> Ptr C'GtsSurface -> C'gpointer -> IO C'gboolean)

{-# LINE 301 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-triangles.html#GTSTRIANGLECLASS>

data C'GtsTriangleClass = C'GtsTriangleClass{
{-# LINE 305 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsTriangleClass'parent_class :: C'GtsObjectClass
{-# LINE 306 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsTriangleClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsTriangleClass v0
  poke p (C'GtsTriangleClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 307 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-triangles.html#GTSTRIANGLE>

data C'GtsTriangle = C'GtsTriangle{
{-# LINE 311 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsTriangle'object :: C'GtsObject
{-# LINE 312 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsTriangle'e1 :: Ptr C'GtsEdge
{-# LINE 313 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsTriangle'e2 :: Ptr C'GtsEdge
{-# LINE 314 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsTriangle'e3 :: Ptr C'GtsEdge
{-# LINE 315 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsTriangle where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    return $ C'GtsTriangle v0 v1 v2 v3
  poke p (C'GtsTriangle v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    return ()

{-# LINE 316 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsFaceClass = C'GtsFaceClass{
{-# LINE 320 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsFaceClass'parent_class :: C'GtsTriangleClass
{-# LINE 321 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsFaceClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsFaceClass v0
  poke p (C'GtsFaceClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 322 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsFace = C'GtsFace{
{-# LINE 326 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsFace'triangle :: C'GtsTriangle
{-# LINE 327 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFace'surfaces :: Ptr C'GSList
{-# LINE 328 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsFace where
  sizeOf _ = 28
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 24
    return $ C'GtsFace v0 v1
  poke p (C'GtsFace v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 24 v1
    return ()

{-# LINE 329 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurfaceClass = C'GtsSurfaceClass{
{-# LINE 333 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSurfaceClass'parent_class :: C'GtsObjectClass
{-# LINE 334 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceClass'add_face :: FunPtr (Ptr C'GtsSurface -> Ptr C'GtsFace -> IO ())
{-# LINE 335 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceClass'remove_face :: FunPtr (Ptr C'GtsSurface -> Ptr C'GtsFace -> IO ())
{-# LINE 336 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSurfaceClass where
  sizeOf _ = 100
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 92
    v2 <- peekByteOff p 96
    return $ C'GtsSurfaceClass v0 v1 v2
  poke p (C'GtsSurfaceClass v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 92 v1
    pokeByteOff p 96 v2
    return ()

{-# LINE 337 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurface = C'GtsSurface

{-# LINE 341 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurfaceStats = C'GtsSurfaceStats{
{-# LINE 345 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSurfaceStats'n_faces :: C'guint
{-# LINE 346 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'n_incompatible_faces :: C'guint
{-# LINE 347 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'n_duplicate_faces :: C'guint
{-# LINE 348 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'n_boundary_edges :: C'guint
{-# LINE 349 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'n_non_manifold_edges :: C'guint
{-# LINE 350 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'edges_per_vertex :: C'GtsRange
{-# LINE 351 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'faces_per_edge :: C'GtsRange
{-# LINE 352 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceStats'parent :: Ptr C'GtsSurface
{-# LINE 353 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSurfaceStats where
  sizeOf _ = 132
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 16
    v4 <- peekByteOff p 20
    v5 <- peekByteOff p 24
    v6 <- peekByteOff p 76
    v7 <- peekByteOff p 128
    return $ C'GtsSurfaceStats v0 v1 v2 v3 v4 v5 v6 v7
  poke p (C'GtsSurfaceStats v0 v1 v2 v3 v4 v5 v6 v7) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 16 v3
    pokeByteOff p 20 v4
    pokeByteOff p 24 v5
    pokeByteOff p 76 v6
    pokeByteOff p 128 v7
    return ()

{-# LINE 354 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurfaceQualityStats = C'GtsSurfaceQualityStats{
{-# LINE 358 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSurfaceQualityStats'face_quality :: C'GtsRange
{-# LINE 359 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceQualityStats'face_area :: C'GtsRange
{-# LINE 360 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceQualityStats'edge_length :: C'GtsRange
{-# LINE 361 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceQualityStats'edge_angle :: C'GtsRange
{-# LINE 362 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceQualityStats'parent :: Ptr C'GtsSurface
{-# LINE 363 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSurfaceQualityStats where
  sizeOf _ = 212
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 52
    v2 <- peekByteOff p 104
    v3 <- peekByteOff p 156
    v4 <- peekByteOff p 208
    return $ C'GtsSurfaceQualityStats v0 v1 v2 v3 v4
  poke p (C'GtsSurfaceQualityStats v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 52 v1
    pokeByteOff p 104 v2
    pokeByteOff p 156 v3
    pokeByteOff p 208 v4
    return ()

{-# LINE 364 "src/Bindings/Gts/Types.hsc" #-}

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

type C'GtsFunc = FunPtr (C'gpointer -> C'gpointer -> IO C'gint)
foreign import ccall "wrapper" mk'GtsFunc
  :: (C'gpointer -> C'gpointer -> IO C'gint) -> IO C'GtsFunc
foreign import ccall "dynamic" mK'GtsFunc
  :: C'GtsFunc -> (C'gpointer -> C'gpointer -> IO C'gint)

{-# LINE 368 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurfaceTraverse = C'GtsSurfaceTraverse

{-# LINE 372 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-bounding-boxes-trees.html#GTSBBOXCLASS>

data C'GtsBBoxClass = C'GtsBBoxClass{
{-# LINE 376 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsBBoxClass'parent_class :: C'GtsObjectClass
{-# LINE 377 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsBBoxClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsBBoxClass v0
  poke p (C'GtsBBoxClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 378 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-bounding-boxes-trees.html#GTSBBOX>

data C'GtsBBox = C'GtsBBox{
{-# LINE 382 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsBBox'object :: C'GtsObject
{-# LINE 383 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'bounded :: C'gpointer
{-# LINE 384 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'x1 :: C'gdouble
{-# LINE 385 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'y1 :: C'gdouble
{-# LINE 386 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'z1 :: C'gdouble
{-# LINE 387 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'x2 :: C'gdouble
{-# LINE 388 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'y2 :: C'gdouble
{-# LINE 389 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsBBox'z2 :: C'gdouble
{-# LINE 390 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsBBox where
  sizeOf _ = 64
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 24
    v4 <- peekByteOff p 32
    v5 <- peekByteOff p 40
    v6 <- peekByteOff p 48
    v7 <- peekByteOff p 56
    return $ C'GtsBBox v0 v1 v2 v3 v4 v5 v6 v7
  poke p (C'GtsBBox v0 v1 v2 v3 v4 v5 v6 v7) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 24 v3
    pokeByteOff p 32 v4
    pokeByteOff p 40 v5
    pokeByteOff p 48 v6
    pokeByteOff p 56 v7
    return ()

{-# LINE 391 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-bounding-boxes-trees.html#GTSBBTREETRAVERSEFUNC>

type C'GtsBBTreeTraverseFunc = FunPtr (Ptr C'GtsBBox -> Ptr C'GtsBBox -> C'gpointer -> IO ())
foreign import ccall "wrapper" mk'GtsBBTreeTraverseFunc
  :: (Ptr C'GtsBBox -> Ptr C'GtsBBox -> C'gpointer -> IO ()) -> IO C'GtsBBTreeTraverseFunc
foreign import ccall "dynamic" mK'GtsBBTreeTraverseFunc
  :: C'GtsBBTreeTraverseFunc -> (Ptr C'GtsBBox -> Ptr C'GtsBBox -> C'gpointer -> IO ())

{-# LINE 395 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-bounding-boxes-trees.html#GTSBBOXDISTFUNC>

type C'GtsBBoxDistFunc = FunPtr (Ptr C'GtsPoint -> C'gpointer -> IO C'gdouble)
foreign import ccall "wrapper" mk'GtsBBoxDistFunc
  :: (Ptr C'GtsPoint -> C'gpointer -> IO C'gdouble) -> IO C'GtsBBoxDistFunc
foreign import ccall "dynamic" mK'GtsBBoxDistFunc
  :: C'GtsBBoxDistFunc -> (Ptr C'GtsPoint -> C'gpointer -> IO C'gdouble)

{-# LINE 399 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-bounding-boxes-trees.html#GTSBBOXCLOSESTFUNC>

type C'GtsBBoxClosestFunc = FunPtr (Ptr C'GtsPoint -> C'gpointer -> IO (Ptr C'GtsPoint))
foreign import ccall "wrapper" mk'GtsBBoxClosestFunc
  :: (Ptr C'GtsPoint -> C'gpointer -> IO (Ptr C'GtsPoint)) -> IO C'GtsBBoxClosestFunc
foreign import ccall "dynamic" mK'GtsBBoxClosestFunc
  :: C'GtsBBoxClosestFunc -> (Ptr C'GtsPoint -> C'gpointer -> IO (Ptr C'GtsPoint))

{-# LINE 403 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurfaceInterClass = C'GtsSurfaceInterClass{
{-# LINE 407 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSurfaceInterClass'parent_class :: C'GtsObjectClass
{-# LINE 408 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSurfaceInterClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsSurfaceInterClass v0
  poke p (C'GtsSurfaceInterClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 409 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsSurfaceInter = C'GtsSurfaceInter{
{-# LINE 413 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSurfaceInter'object :: C'GtsObject
{-# LINE 414 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceInter's1 :: Ptr C'GtsSurface
{-# LINE 415 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceInter's2 :: Ptr C'GtsSurface
{-# LINE 416 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSurfaceInter'edges :: Ptr C'GSList
{-# LINE 417 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSurfaceInter where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    return $ C'GtsSurfaceInter v0 v1 v2 v3
  poke p (C'GtsSurfaceInter v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    return ()

{-# LINE 418 "src/Bindings/Gts/Types.hsc" #-}

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

type C'GtsBooleanOperation = CUInt

{-# LINE 422 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_1_OUT_2 = 0
c'GTS_1_OUT_2 :: (Num a) => a

{-# LINE 423 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_1_IN_2 = 1
c'GTS_1_IN_2 :: (Num a) => a

{-# LINE 424 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_2_OUT_1 = 2
c'GTS_2_OUT_1 :: (Num a) => a

{-# LINE 425 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_2_IN_1 = 3
c'GTS_2_IN_1 :: (Num a) => a

{-# LINE 426 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-surface-simplification-and-refinement.html#GTSCOARSENFUNC>

type C'GtsCoarsenFunc = FunPtr (Ptr C'GtsEdge -> Ptr C'GtsVertexClass -> C'gpointer -> IO (Ptr C'GtsVertex))
foreign import ccall "wrapper" mk'GtsCoarsenFunc
  :: (Ptr C'GtsEdge -> Ptr C'GtsVertexClass -> C'gpointer -> IO (Ptr C'GtsVertex)) -> IO C'GtsCoarsenFunc
foreign import ccall "dynamic" mK'GtsCoarsenFunc
  :: C'GtsCoarsenFunc -> (Ptr C'GtsEdge -> Ptr C'GtsVertexClass -> C'gpointer -> IO (Ptr C'GtsVertex))

{-# LINE 430 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-surface-simplification-and-refinement.html#GTSREFINEFUNC>

type C'GtsRefineFunc = FunPtr (Ptr C'GtsEdge -> Ptr C'GtsVertexClass -> C'gpointer -> IO (Ptr C'GtsVertex))
foreign import ccall "wrapper" mk'GtsRefineFunc
  :: (Ptr C'GtsEdge -> Ptr C'GtsVertexClass -> C'gpointer -> IO (Ptr C'GtsVertex)) -> IO C'GtsRefineFunc
foreign import ccall "dynamic" mK'GtsRefineFunc
  :: C'GtsRefineFunc -> (Ptr C'GtsEdge -> Ptr C'GtsVertexClass -> C'gpointer -> IO (Ptr C'GtsVertex))

{-# LINE 434 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-surface-simplification-and-refinement.html#GTSSTOPFUNC>

type C'GtsStopFunc = FunPtr (C'gdouble -> C'guint -> C'gpointer -> IO C'gboolean)
foreign import ccall "wrapper" mk'GtsStopFunc
  :: (C'gdouble -> C'guint -> C'gpointer -> IO C'gboolean) -> IO C'GtsStopFunc
foreign import ccall "dynamic" mK'GtsStopFunc
  :: C'GtsStopFunc -> (C'gdouble -> C'guint -> C'gpointer -> IO C'gboolean)

{-# LINE 438 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-surface-simplification-and-refinement.html#GTSVOLUMEOPTIMIZEDPARAMS>

data C'GtsVolumeOptimizedParams = C'GtsVolumeOptimizedParams{
{-# LINE 442 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsVolumeOptimizedParams'volume_weight :: C'gdouble
{-# LINE 443 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsVolumeOptimizedParams'boundary_weight :: C'gdouble
{-# LINE 444 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsVolumeOptimizedParams'shape_weight :: C'gdouble
{-# LINE 445 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsVolumeOptimizedParams where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    return $ C'GtsVolumeOptimizedParams v0 v1 v2
  poke p (C'GtsVolumeOptimizedParams v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    return ()

{-# LINE 446 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-out-of-core-simplification.html#GTSCLUSTERCLASS>

data C'GtsClusterClass = C'GtsClusterClass{
{-# LINE 450 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsClusterClass'parent_class :: C'GtsObjectClass
{-# LINE 451 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterClass'add :: FunPtr (Ptr C'GtsCluster -> Ptr C'GtsPoint -> C'gpointer -> IO ())
{-# LINE 452 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterClass'update :: FunPtr (Ptr C'GtsCluster -> IO ())
{-# LINE 453 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsClusterClass where
  sizeOf _ = 100
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 92
    v2 <- peekByteOff p 96
    return $ C'GtsClusterClass v0 v1 v2
  poke p (C'GtsClusterClass v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 92 v1
    pokeByteOff p 96 v2
    return ()

{-# LINE 454 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-out-of-core-simplification.html#GTSCLUSTER>

data C'GtsCluster = C'GtsCluster{
{-# LINE 458 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsCluster'parent :: C'GtsObject
{-# LINE 459 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCluster'id :: C'GtsClusterId
{-# LINE 460 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCluster'v :: Ptr C'GtsVertex
{-# LINE 461 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCluster'n :: C'guint
{-# LINE 462 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsCluster where
  sizeOf _ = 32
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 24
    v3 <- peekByteOff p 28
    return $ C'GtsCluster v0 v1 v2 v3
  poke p (C'GtsCluster v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 24 v2
    pokeByteOff p 28 v3
    return ()

{-# LINE 463 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-out-of-core-simplification.html#GTSCLUSTERID>

data C'GtsClusterId = C'GtsClusterId{
{-# LINE 467 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsClusterId'x :: C'guint
{-# LINE 468 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterId'y :: C'guint
{-# LINE 469 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterId'z :: C'guint
{-# LINE 470 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsClusterId where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GtsClusterId v0 v1 v2
  poke p (C'GtsClusterId v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 471 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-out-of-core-simplification.html#GTSCLUSTERGRIDCLASS>

data C'GtsClusterGridClass = C'GtsClusterGridClass{
{-# LINE 475 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsClusterGridClass'parent_class :: C'GtsObjectClass
{-# LINE 476 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsClusterGridClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsClusterGridClass v0
  poke p (C'GtsClusterGridClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 477 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-out-of-core-simplification.html#GTSCLUSTERGRID>

data C'GtsClusterGrid = C'GtsClusterGrid{
{-# LINE 481 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsClusterGrid'parent :: C'GtsObject
{-# LINE 482 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterGrid'surface :: Ptr C'GtsSurface
{-# LINE 483 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterGrid'bbox :: Ptr C'GtsBBox
{-# LINE 484 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterGrid'size :: C'GtsVector
{-# LINE 485 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterGrid'cluster_class :: Ptr C'GtsClusterClass
{-# LINE 486 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsClusterGrid'clusters :: Ptr C'GHashTable
{-# LINE 487 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsClusterGrid where
  sizeOf _ = 52
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    v4 <- peekByteOff p 44
    v5 <- peekByteOff p 48
    return $ C'GtsClusterGrid v0 v1 v2 v3 v4 v5
  poke p (C'GtsClusterGrid v0 v1 v2 v3 v4 v5) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    pokeByteOff p 44 v4
    pokeByteOff p 48 v5
    return ()

{-# LINE 488 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-isosurfaces-from-3d-functions.html#GTSCARTESIANGRID>

data C'GtsCartesianGrid = C'GtsCartesianGrid{
{-# LINE 492 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsCartesianGrid'nx :: C'guint
{-# LINE 493 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'ny :: C'guint
{-# LINE 494 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'nz :: C'guint
{-# LINE 495 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'x :: C'gdouble
{-# LINE 496 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'dx :: C'gdouble
{-# LINE 497 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'y :: C'gdouble
{-# LINE 498 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'dy :: C'gdouble
{-# LINE 499 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'z :: C'gdouble
{-# LINE 500 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsCartesianGrid'dz :: C'gdouble
{-# LINE 501 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsCartesianGrid where
  sizeOf _ = 60
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 12
    v4 <- peekByteOff p 20
    v5 <- peekByteOff p 28
    v6 <- peekByteOff p 36
    v7 <- peekByteOff p 44
    v8 <- peekByteOff p 52
    return $ C'GtsCartesianGrid v0 v1 v2 v3 v4 v5 v6 v7 v8
  poke p (C'GtsCartesianGrid v0 v1 v2 v3 v4 v5 v6 v7 v8) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 12 v3
    pokeByteOff p 20 v4
    pokeByteOff p 28 v5
    pokeByteOff p 36 v6
    pokeByteOff p 44 v7
    pokeByteOff p 52 v8
    return ()

{-# LINE 502 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-isosurfaces-from-3d-functions.html#GTSGRIDPLANE>

data C'GtsGridPlane = C'GtsGridPlane{
{-# LINE 506 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGridPlane'p :: Ptr (Ptr C'GtsPoint)
{-# LINE 507 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGridPlane'nx :: C'guint
{-# LINE 508 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGridPlane'ny :: C'guint
{-# LINE 509 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGridPlane where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GtsGridPlane v0 v1 v2
  poke p (C'GtsGridPlane v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 510 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-isosurfaces-from-3d-functions.html#GTSISOSLICE>

data C'GtsIsoSlice = C'GtsIsoSlice

{-# LINE 514 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-delaunay-and-constrained-delaunay-triangulations.html#GTSCONSTRAINTCLASS>

data C'GtsConstraintClass = C'GtsConstraintClass

{-# LINE 518 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-delaunay-and-constrained-delaunay-triangulations.html#GTSCONSTRAINT>

data C'GtsConstraint = C'GtsConstraint

{-# LINE 522 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-vertex-split.html#GTSSPLITCLASS>

data C'GtsSplitClass = C'GtsSplitClass{
{-# LINE 526 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSplitClass'parent_class :: C'GtsObjectClass
{-# LINE 527 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSplitClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsSplitClass v0
  poke p (C'GtsSplitClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 528 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-vertex-split.html#GTSSPLITCFACE>

data C'GtsSplitCFace = C'GtsSplitCFace

{-# LINE 532 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-vertex-split.html#GTSSPLIT>

data C'GtsSplit = C'GtsSplit{
{-# LINE 536 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsSplit'object :: C'GtsObject
{-# LINE 537 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSplit'v :: Ptr C'GtsVertex
{-# LINE 538 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSplit'v1 :: Ptr C'GtsObject
{-# LINE 539 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSplit'v2 :: Ptr C'GtsObject
{-# LINE 540 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSplit'cfaces :: Ptr C'GtsSplitCFace
{-# LINE 541 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsSplit'ncf :: C'guint
{-# LINE 542 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsSplit where
  sizeOf _ = 32
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    v4 <- peekByteOff p 24
    v5 <- peekByteOff p 28
    return $ C'GtsSplit v0 v1 v2 v3 v4 v5
  poke p (C'GtsSplit v0 v1 v2 v3 v4 v5) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    pokeByteOff p 24 v4
    pokeByteOff p 28 v5
    return ()

{-# LINE 543 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-vertex-split.html#GTSSPLITTRAVERSEFUNC>

type C'GtsSplitTraverseFunc = FunPtr (Ptr C'GtsSplit -> C'gpointer -> IO C'gboolean)
foreign import ccall "wrapper" mk'GtsSplitTraverseFunc
  :: (Ptr C'GtsSplit -> C'gpointer -> IO C'gboolean) -> IO C'GtsSplitTraverseFunc
foreign import ccall "dynamic" mK'GtsSplitTraverseFunc
  :: C'GtsSplitTraverseFunc -> (Ptr C'GtsSplit -> C'gpointer -> IO C'gboolean)

{-# LINE 547 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsPSurfaceClass = C'GtsPSurfaceClass{
{-# LINE 551 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsPSurfaceClass'parent_class :: C'GtsObjectClass
{-# LINE 552 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsPSurfaceClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsPSurfaceClass v0
  poke p (C'GtsPSurfaceClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 553 "src/Bindings/Gts/Types.hsc" #-}

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

data C'GtsPSurface = C'GtsPSurface{
{-# LINE 557 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsPSurface'object :: C'GtsObject
{-# LINE 558 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface's :: Ptr C'GtsSurface
{-# LINE 559 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface'split :: Ptr C'GPtrArray
{-# LINE 560 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface'split_class :: Ptr C'GtsSplitClass
{-# LINE 561 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface'pos :: C'guint
{-# LINE 562 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface'min :: C'guint
{-# LINE 563 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface'vertices :: Ptr C'GPtrArray
{-# LINE 564 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPSurface'faces :: Ptr C'GPtrArray
{-# LINE 565 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsPSurface where
  sizeOf _ = 40
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    v4 <- peekByteOff p 24
    v5 <- peekByteOff p 28
    v6 <- peekByteOff p 32
    v7 <- peekByteOff p 36
    return $ C'GtsPSurface v0 v1 v2 v3 v4 v5 v6 v7
  poke p (C'GtsPSurface v0 v1 v2 v3 v4 v5 v6 v7) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    pokeByteOff p 24 v4
    pokeByteOff p 28 v5
    pokeByteOff p 32 v6
    pokeByteOff p 36 v7
    return ()

{-# LINE 566 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-hierarchical-vertex-split.html#GTSHSPLITCLASS>

data C'GtsHSplitClass = C'GtsHSplitClass{
{-# LINE 570 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsHSplitClass'parent_class :: C'GtsSplitClass
{-# LINE 571 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsHSplitClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsHSplitClass v0
  poke p (C'GtsHSplitClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 572 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-hierarchical-vertex-split.html#GTSHSPLIT>

data C'GtsHSplit = C'GtsHSplit{
{-# LINE 576 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsHSplit'split :: C'GtsSplit
{-# LINE 577 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSplit'index :: Ptr C'GtsEHeapPair
{-# LINE 578 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSplit'parent :: Ptr C'GtsHSplit
{-# LINE 579 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSplit'nchild :: C'guint
{-# LINE 580 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsHSplit where
  sizeOf _ = 44
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 32
    v2 <- peekByteOff p 36
    v3 <- peekByteOff p 40
    return $ C'GtsHSplit v0 v1 v2 v3
  poke p (C'GtsHSplit v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 32 v1
    pokeByteOff p 36 v2
    pokeByteOff p 40 v3
    return ()

{-# LINE 581 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-hierarchical-surfaces.html#GTSHSURFACECLASS>

data C'GtsHSurfaceClass = C'GtsHSurfaceClass{
{-# LINE 585 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsHSurfaceClass'parent_class :: C'GtsObjectClass
{-# LINE 586 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsHSurfaceClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsHSurfaceClass v0
  poke p (C'GtsHSurfaceClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 587 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-hierarchical-surfaces.html#GTSHSURFACE>

data C'GtsHSurface = C'GtsHSurface{
{-# LINE 591 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsHSurface'object :: C'GtsObject
{-# LINE 592 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSurface's :: Ptr C'GtsSurface
{-# LINE 593 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSurface'roots :: Ptr C'GSList
{-# LINE 594 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSurface'expandable :: Ptr C'GtsEHeap
{-# LINE 595 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSurface'collapsable :: Ptr C'GtsEHeap
{-# LINE 596 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSurface'split :: Ptr C'GPtrArray
{-# LINE 597 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsHSurface'nvertex :: C'guint
{-# LINE 598 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsHSurface where
  sizeOf _ = 36
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    v4 <- peekByteOff p 24
    v5 <- peekByteOff p 28
    v6 <- peekByteOff p 32
    return $ C'GtsHSurface v0 v1 v2 v3 v4 v5 v6
  poke p (C'GtsHSurface v0 v1 v2 v3 v4 v5 v6) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    pokeByteOff p 24 v4
    pokeByteOff p 28 v5
    pokeByteOff p 32 v6
    return ()

{-# LINE 599 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGNODECLASS>

data C'GtsGNodeClass = C'GtsGNodeClass{
{-# LINE 603 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGNodeClass'parent_class :: C'GtsSListContainerClass
{-# LINE 604 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGNodeClass'weight :: FunPtr (Ptr C'GtsGNode -> IO C'gfloat)
{-# LINE 605 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGNodeClass'write :: FunPtr (Ptr C'GtsGNode -> Ptr CFile -> IO ())
{-# LINE 606 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGNodeClass where
  sizeOf _ = 136
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 128
    v2 <- peekByteOff p 132
    return $ C'GtsGNodeClass v0 v1 v2
  poke p (C'GtsGNodeClass v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 128 v1
    pokeByteOff p 132 v2
    return ()

{-# LINE 607 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGNODE>

data C'GtsGNode = C'GtsGNode{
{-# LINE 611 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGNode'container :: C'GtsSListContainer
{-# LINE 612 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGNode'level :: C'guint
{-# LINE 613 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGNode where
  sizeOf _ = 28
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 24
    return $ C'GtsGNode v0 v1
  poke p (C'GtsGNode v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 24 v1
    return ()

{-# LINE 614 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGEDGECLASS>

data C'GtsGEdgeClass = C'GtsGEdgeClass{
{-# LINE 618 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGEdgeClass'parent_class :: C'GtsContaineeClass
{-# LINE 619 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGEdgeClass'link :: FunPtr (Ptr C'GtsGEdge -> Ptr C'GtsGNode -> Ptr C'GtsGNode -> IO (Ptr C'GtsGEdge))
{-# LINE 620 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGEdgeClass'weight :: FunPtr (Ptr C'GtsGEdge -> IO C'gfloat)
{-# LINE 621 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGEdgeClass'write :: FunPtr (Ptr C'GtsGEdge -> Ptr CFile -> IO ())
{-# LINE 622 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGEdgeClass where
  sizeOf _ = 124
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 112
    v2 <- peekByteOff p 116
    v3 <- peekByteOff p 120
    return $ C'GtsGEdgeClass v0 v1 v2 v3
  poke p (C'GtsGEdgeClass v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 112 v1
    pokeByteOff p 116 v2
    pokeByteOff p 120 v3
    return ()

{-# LINE 623 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGEDGE>

data C'GtsGEdge = C'GtsGEdge{
{-# LINE 627 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGEdge'containee :: C'GtsContainee
{-# LINE 628 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGEdge'n1 :: Ptr C'GtsGNode
{-# LINE 629 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGEdge'n2 :: Ptr C'GtsGNode
{-# LINE 630 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGEdge where
  sizeOf _ = 20
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    return $ C'GtsGEdge v0 v1 v2
  poke p (C'GtsGEdge v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    return ()

{-# LINE 631 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGRAPHCLASS>

data C'GtsGraphClass = C'GtsGraphClass{
{-# LINE 635 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGraphClass'parent_class :: C'GtsHashContainerClass
{-# LINE 636 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraphClass'weight :: FunPtr (Ptr C'GtsGraph -> IO C'gfloat)
{-# LINE 637 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGraphClass where
  sizeOf _ = 132
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 128
    return $ C'GtsGraphClass v0 v1
  poke p (C'GtsGraphClass v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 128 v1
    return ()

{-# LINE 638 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGRAPH>

data C'GtsGraph = C'GtsGraph{
{-# LINE 642 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGraph'object :: C'GtsHashContainer
{-# LINE 643 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraph'graph_class :: Ptr C'GtsGraphClass
{-# LINE 644 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraph'node_class :: Ptr C'GtsGNodeClass
{-# LINE 645 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraph'edge_class :: Ptr C'GtsGEdgeClass
{-# LINE 646 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGraph where
  sizeOf _ = 36
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 24
    v2 <- peekByteOff p 28
    v3 <- peekByteOff p 32
    return $ C'GtsGraph v0 v1 v2 v3
  poke p (C'GtsGraph v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 24 v1
    pokeByteOff p 28 v2
    pokeByteOff p 32 v3
    return ()

{-# LINE 647 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSGRAPHTRAVERSE>

data C'GtsGraphTraverse = C'GtsGraphTraverse

{-# LINE 651 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSTRAVERSETYPE>

type C'GtsTraverseType = CUInt

{-# LINE 655 "src/Bindings/Gts/Types.hsc" #-}
c'GTS_BREADTH_FIRST = 0
c'GTS_BREADTH_FIRST :: (Num a) => a

{-# LINE 656 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSFNODE>

data C'GtsFNode = C'GtsFNode{
{-# LINE 660 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsFNode'node :: C'GtsGNode
{-# LINE 661 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsFNode'f :: Ptr C'GtsFace
{-# LINE 662 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsFNode where
  sizeOf _ = 32
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 28
    return $ C'GtsFNode v0 v1
  poke p (C'GtsFNode v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 28 v1
    return ()

{-# LINE 663 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-class.html#GTSFNODECLASS>

data C'GtsFNodeClass = C'GtsFNodeClass{
{-# LINE 667 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsFNodeClass'parent_class :: C'GtsGNodeClass
{-# LINE 668 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsFNodeClass where
  sizeOf _ = 136
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsFNodeClass v0
  poke p (C'GtsFNodeClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 669 "src/Bindings/Gts/Types.hsc" #-}


-- | <http://gts.sourceforge.net/reference/gts-weighted-graph.html#GTSWGEDGECLASS>

data C'GtsWGEdgeClass = C'GtsWGEdgeClass{
{-# LINE 674 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsWGEdgeClass'parent_class :: C'GtsGEdgeClass
{-# LINE 675 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsWGEdgeClass where
  sizeOf _ = 124
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsWGEdgeClass v0
  poke p (C'GtsWGEdgeClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 676 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-weighted-graph.html#GTSWGEDGE>

data C'GtsWGEdge = C'GtsWGEdge{
{-# LINE 680 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsWGEdge'gedge :: C'GtsGEdge
{-# LINE 681 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsWGEdge'weight :: C'gfloat
{-# LINE 682 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsWGEdge where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 20
    return $ C'GtsWGEdge v0 v1
  poke p (C'GtsWGEdge v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 20 v1
    return ()

{-# LINE 683 "src/Bindings/Gts/Types.hsc" #-}


-- | <http://gts.sourceforge.net/reference/gts-weighted-graph.html#GTSWGNODECLASS>

data C'GtsWGNodeClass = C'GtsWGNodeClass{
{-# LINE 688 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsWGNodeClass'parent_class :: C'GtsGNodeClass
{-# LINE 689 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsWGNodeClass where
  sizeOf _ = 136
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsWGNodeClass v0
  poke p (C'GtsWGNodeClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 690 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-weighted-graph.html#GTSWGNODE>

data C'GtsWGNode = C'GtsWGNode{
{-# LINE 694 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsWGNode'node :: C'GtsGNode
{-# LINE 695 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsWGNode'weight :: C'gfloat
{-# LINE 696 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsWGNode where
  sizeOf _ = 32
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 28
    return $ C'GtsWGNode v0 v1
  poke p (C'GtsWGNode v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 28 v1
    return ()

{-# LINE 697 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-weighted-graph.html#GTSWGRAPHCLASS>

data C'GtsWGraphClass = C'GtsWGraphClass{
{-# LINE 701 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsWGraphClass'parent_class :: C'GtsGraphClass
{-# LINE 702 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsWGraphClass where
  sizeOf _ = 132
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsWGraphClass v0
  poke p (C'GtsWGraphClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 703 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-weighted-graph.html#GTSWGRAPH>

data C'GtsWGraph = C'GtsWGraph{
{-# LINE 707 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsWGraph'graph :: C'GtsGraph
{-# LINE 708 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsWGraph'weight :: C'gfloat
{-# LINE 709 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsWGraph where
  sizeOf _ = 40
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 36
    return $ C'GtsWGraph v0 v1
  poke p (C'GtsWGraph v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 36 v1
    return ()

{-# LINE 710 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-progressive-graph.html#GTSGNODESPLITCLASS>

data C'GtsGNodeSplitClass = C'GtsGNodeSplitClass{
{-# LINE 714 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGNodeSplitClass'parent_class :: C'GtsObjectClass
{-# LINE 715 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGNodeSplitClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsGNodeSplitClass v0
  poke p (C'GtsGNodeSplitClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 716 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-progressive-graph.html#GTSGNODESPLIT>

data C'GtsGNodeSplit = C'GtsGNodeSplit{
{-# LINE 720 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGNodeSplit'object :: C'GtsObject
{-# LINE 721 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGNodeSplit'n :: Ptr C'GtsGNode
{-# LINE 722 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGNodeSplit'n1 :: Ptr C'GtsObject
{-# LINE 723 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGNodeSplit'n2 :: Ptr C'GtsObject
{-# LINE 724 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGNodeSplit where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    return $ C'GtsGNodeSplit v0 v1 v2 v3
  poke p (C'GtsGNodeSplit v0 v1 v2 v3) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    return ()

{-# LINE 725 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-progressive-graph.html#GTSPGRAPHCLASS>

data C'GtsPGraphClass = C'GtsPGraphClass{
{-# LINE 729 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsPGraphClass'parent_class :: C'GtsObjectClass
{-# LINE 730 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsPGraphClass where
  sizeOf _ = 92
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    return $ C'GtsPGraphClass v0
  poke p (C'GtsPGraphClass v0) = do
    pokeByteOff p 0 v0
    return ()

{-# LINE 731 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-progressive-graph.html#GTSPGRAPH>

data C'GtsPGraph = C'GtsPGraph{
{-# LINE 735 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsPGraph'object :: C'GtsObject
{-# LINE 736 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'g :: Ptr C'GtsGraph
{-# LINE 737 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'split :: Ptr C'GPtrArray
{-# LINE 738 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'levels :: Ptr C'GArray
{-# LINE 739 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'split_class :: Ptr C'GtsGNodeSplitClass
{-# LINE 740 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'edge_class :: Ptr C'GtsWGEdgeClass
{-# LINE 741 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'pos :: C'guint
{-# LINE 742 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'min :: C'guint
{-# LINE 743 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsPGraph'level :: C'guint
{-# LINE 744 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsPGraph where
  sizeOf _ = 44
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    v4 <- peekByteOff p 24
    v5 <- peekByteOff p 28
    v6 <- peekByteOff p 32
    v7 <- peekByteOff p 36
    v8 <- peekByteOff p 40
    return $ C'GtsPGraph v0 v1 v2 v3 v4 v5 v6 v7 v8
  poke p (C'GtsPGraph v0 v1 v2 v3 v4 v5 v6 v7 v8) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    pokeByteOff p 24 v4
    pokeByteOff p 28 v5
    pokeByteOff p 32 v6
    pokeByteOff p 36 v7
    pokeByteOff p 40 v8
    return ()

{-# LINE 745 "src/Bindings/Gts/Types.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-graph-partitioning.html#GTSGRAPHBISECTION>

data C'GtsGraphBisection = C'GtsGraphBisection{
{-# LINE 749 "src/Bindings/Gts/Types.hsc" #-}

  c'GtsGraphBisection'g :: Ptr C'GtsGraph
{-# LINE 750 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraphBisection'g1 :: Ptr C'GtsGraph
{-# LINE 751 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraphBisection'g2 :: Ptr C'GtsGraph
{-# LINE 752 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraphBisection'bg1 :: Ptr C'GHashTable
{-# LINE 753 "src/Bindings/Gts/Types.hsc" #-}
,
  c'GtsGraphBisection'bg2 :: Ptr C'GHashTable
{-# LINE 754 "src/Bindings/Gts/Types.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GtsGraphBisection where
  sizeOf _ = 20
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 12
    v4 <- peekByteOff p 16
    return $ C'GtsGraphBisection v0 v1 v2 v3 v4
  poke p (C'GtsGraphBisection v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 12 v3
    pokeByteOff p 16 v4
    return ()

{-# LINE 755 "src/Bindings/Gts/Types.hsc" #-}