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

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

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

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

foreign import ccall "gts_graph_bisection_new" c'gts_graph_bisection_new
  :: Ptr C'GtsWGraph -> C'guint -> C'guint -> C'guint -> C'gfloat -> IO (Ptr C'GtsGraphBisection)
foreign import ccall "&gts_graph_bisection_new" p'gts_graph_bisection_new
  :: FunPtr (Ptr C'GtsWGraph -> C'guint -> C'guint -> C'guint -> C'gfloat -> IO (Ptr C'GtsGraphBisection))

{-# LINE 11 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_ggg_bisection" c'gts_graph_ggg_bisection
  :: Ptr C'GtsGraph -> C'guint -> IO (Ptr C'GtsGraphBisection)
foreign import ccall "&gts_graph_ggg_bisection" p'gts_graph_ggg_bisection
  :: FunPtr (Ptr C'GtsGraph -> C'guint -> IO (Ptr C'GtsGraphBisection))

{-# LINE 12 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_bfgg_bisection" c'gts_graph_bfgg_bisection
  :: Ptr C'GtsGraph -> C'guint -> IO (Ptr C'GtsGraphBisection)
foreign import ccall "&gts_graph_bfgg_bisection" p'gts_graph_bfgg_bisection
  :: FunPtr (Ptr C'GtsGraph -> C'guint -> IO (Ptr C'GtsGraphBisection))

{-# LINE 13 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_bisection_check" c'gts_graph_bisection_check
  :: Ptr C'GtsGraphBisection -> IO C'gboolean
foreign import ccall "&gts_graph_bisection_check" p'gts_graph_bisection_check
  :: FunPtr (Ptr C'GtsGraphBisection -> IO C'gboolean)

{-# LINE 14 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_bisection_kl_refine" c'gts_graph_bisection_kl_refine
  :: Ptr C'GtsGraphBisection -> C'guint -> IO C'gdouble
foreign import ccall "&gts_graph_bisection_kl_refine" p'gts_graph_bisection_kl_refine
  :: FunPtr (Ptr C'GtsGraphBisection -> C'guint -> IO C'gdouble)

{-# LINE 15 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_bisection_bkl_refine" c'gts_graph_bisection_bkl_refine
  :: Ptr C'GtsGraphBisection -> C'guint -> C'gfloat -> IO C'gdouble
foreign import ccall "&gts_graph_bisection_bkl_refine" p'gts_graph_bisection_bkl_refine
  :: FunPtr (Ptr C'GtsGraphBisection -> C'guint -> C'gfloat -> IO C'gdouble)

{-# LINE 16 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_recursive_bisection" c'gts_graph_recursive_bisection
  :: Ptr C'GtsWGraph -> C'guint -> C'guint -> C'guint -> C'guint -> C'gfloat -> IO (Ptr C'GSList)
foreign import ccall "&gts_graph_recursive_bisection" p'gts_graph_recursive_bisection
  :: FunPtr (Ptr C'GtsWGraph -> C'guint -> C'guint -> C'guint -> C'guint -> C'gfloat -> IO (Ptr C'GSList))

{-# LINE 17 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_bisection_destroy" c'gts_graph_bisection_destroy
  :: Ptr C'GtsGraphBisection -> C'gboolean -> IO ()
foreign import ccall "&gts_graph_bisection_destroy" p'gts_graph_bisection_destroy
  :: FunPtr (Ptr C'GtsGraphBisection -> C'gboolean -> IO ())

{-# LINE 18 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}

foreign import ccall "gts_graph_bubble_partition" c'gts_graph_bubble_partition
  :: Ptr C'GtsGraph -> C'guint -> C'guint -> C'GtsFunc -> C'gpointer -> IO (Ptr C'GSList)
foreign import ccall "&gts_graph_bubble_partition" p'gts_graph_bubble_partition
  :: FunPtr (Ptr C'GtsGraph -> C'guint -> C'guint -> C'GtsFunc -> C'gpointer -> IO (Ptr C'GSList))

{-# LINE 20 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_partition_edges_cut" c'gts_graph_partition_edges_cut
  :: Ptr C'GSList -> IO C'guint
foreign import ccall "&gts_graph_partition_edges_cut" p'gts_graph_partition_edges_cut
  :: FunPtr (Ptr C'GSList -> IO C'guint)

{-# LINE 21 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_partition_balance" c'gts_graph_partition_balance
  :: Ptr C'GSList -> IO C'gfloat
foreign import ccall "&gts_graph_partition_balance" p'gts_graph_partition_balance
  :: FunPtr (Ptr C'GSList -> IO C'gfloat)

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

{-# LINE 23 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_partition_print_stats" c'gts_graph_partition_print_stats
  :: Ptr C'GSList -> Ptr CFile -> IO ()
foreign import ccall "&gts_graph_partition_print_stats" p'gts_graph_partition_print_stats
  :: FunPtr (Ptr C'GSList -> Ptr CFile -> IO ())

{-# LINE 24 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_partition_edges_cut_weight" c'gts_graph_partition_edges_cut_weight
  :: Ptr C'GSList -> IO C'gfloat
foreign import ccall "&gts_graph_partition_edges_cut_weight" p'gts_graph_partition_edges_cut_weight
  :: FunPtr (Ptr C'GSList -> IO C'gfloat)

{-# LINE 25 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}
foreign import ccall "gts_graph_partition_destroy" c'gts_graph_partition_destroy
  :: Ptr C'GSList -> IO ()
foreign import ccall "&gts_graph_partition_destroy" p'gts_graph_partition_destroy
  :: FunPtr (Ptr C'GSList -> IO ())

{-# LINE 26 "src/Bindings/Gts/GraphAndOperationsOnGraphs/GraphPartitioning.hsc" #-}