{-# LANGUAGE FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, InterruptibleFFI #-}
module HROOT.Core.Ordinary (getROOT, gROOT, gSystem, gStyle) where
import Foreign.C
import Foreign.Ptr
import FFICXX.Runtime.Cast
import HROOT.Core.TROOT.RawType
import HROOT.Core.TROOT.Cast
import HROOT.Core.TROOT.Interface
import HROOT.Core.TROOT.RawType
import HROOT.Core.TROOT.Cast
import HROOT.Core.TROOT.Interface
import HROOT.Core.TSystem.RawType
import HROOT.Core.TSystem.Cast
import HROOT.Core.TSystem.Interface
import HROOT.Core.TStyle.RawType
import HROOT.Core.TStyle.Cast
import HROOT.Core.TStyle.Interface

foreign import ccall interruptible
               "HROOT-coreTopLevel.h TopLevel_GetROOT" c_getroot ::
               IO (Ptr RawTROOT)

foreign import ccall interruptible
               "HROOT-coreTopLevel.h TopLevel_gROOT" c_groot :: IO (Ptr RawTROOT)

foreign import ccall interruptible
               "HROOT-coreTopLevel.h TopLevel_gSystem" c_gsystem ::
               IO (Ptr RawTSystem)

foreign import ccall interruptible
               "HROOT-coreTopLevel.h TopLevel_gStyle" c_gstyle ::
               IO (Ptr RawTStyle)

getROOT :: () => IO TROOT
getROOT :: IO TROOT
getROOT = IO (Ptr RawTROOT) -> IO TROOT
forall a ca. Castable a ca => IO ca -> IO a
xformnull IO (Ptr RawTROOT)
c_getroot

gROOT :: IO TROOT
gROOT :: IO TROOT
gROOT = IO (Ptr RawTROOT) -> IO TROOT
forall a ca. Castable a ca => IO ca -> IO a
xformnull IO (Ptr RawTROOT)
c_groot

gSystem :: IO TSystem
gSystem :: IO TSystem
gSystem = IO (Ptr RawTSystem) -> IO TSystem
forall a ca. Castable a ca => IO ca -> IO a
xformnull IO (Ptr RawTSystem)
c_gsystem

gStyle :: IO TStyle
gStyle :: IO TStyle
gStyle = IO (Ptr RawTStyle) -> IO TStyle
forall a ca. Castable a ca => IO ca -> IO a
xformnull IO (Ptr RawTStyle)
c_gstyle