{-# LINE 2 "./Graphics/UI/Gtk/ModelView/TreeRowReference.chs" #-}
module Graphics.UI.Gtk.ModelView.TreeRowReference (
  TreeRowReference,
  treeRowReferenceNew,
  treeRowReferenceGetPath,
  treeRowReferenceValid,
  ) where
import Control.Monad (liftM)
import System.Glib.FFI
import Graphics.UI.Gtk.Types
{-# LINE 51 "./Graphics/UI/Gtk/ModelView/TreeRowReference.chs" #-}
import Graphics.UI.Gtk.ModelView.Types
{-# LINE 52 "./Graphics/UI/Gtk/ModelView/TreeRowReference.chs" #-}
{-# LINE 54 "./Graphics/UI/Gtk/ModelView/TreeRowReference.chs" #-}
newtype TreeRowReference = TreeRowReference (ForeignPtr (TreeRowReference))
{-# LINE 60 "./Graphics/UI/Gtk/ModelView/TreeRowReference.chs" #-}
treeRowReferenceNew :: TreeModelClass self => self
 -> TreePath
 -> IO (Maybe TreeRowReference)
treeRowReferenceNew self path = withTreePath path $ \path -> do
  rowRefPtr <-
    (\(TreeModel arg1) (NativeTreePath arg2) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_row_reference_new argPtr1 arg2) (toTreeModel self) path
  if rowRefPtr==nullPtr then return Nothing else
    liftM (Just . TreeRowReference) $
    newForeignPtr rowRefPtr tree_row_reference_free
treeRowReferenceGetPath :: TreeRowReference -> IO TreePath
treeRowReferenceGetPath ref =
  (\(TreeRowReference arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_row_reference_get_path argPtr1) ref
  >>= fromTreePath 
treeRowReferenceValid :: TreeRowReference -> IO Bool
treeRowReferenceValid self =
  liftM toBool $
  (\(TreeRowReference arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_row_reference_valid argPtr1)
{-# LINE 95 "./Graphics/UI/Gtk/ModelView/TreeRowReference.chs" #-}
    self
foreign import ccall unsafe ">k_tree_row_reference_free"
  tree_row_reference_free :: FinalizerPtr TreeRowReference
foreign import ccall safe "gtk_tree_row_reference_new"
  gtk_tree_row_reference_new :: ((Ptr TreeModel) -> ((Ptr NativeTreePath) -> (IO (Ptr TreeRowReference))))
foreign import ccall unsafe "gtk_tree_row_reference_get_path"
  gtk_tree_row_reference_get_path :: ((Ptr TreeRowReference) -> (IO (Ptr NativeTreePath)))
foreign import ccall unsafe "gtk_tree_row_reference_valid"
  gtk_tree_row_reference_valid :: ((Ptr TreeRowReference) -> (IO CInt))