{-# LANGUAGE EmptyDataDecls, ExistentialQuantification,
  FlexibleContexts, FlexibleInstances, ForeignFunctionInterface,
  MultiParamTypeClasses, ScopedTypeVariables, TypeFamilies,
  TypeSynonymInstances #-}
module HROOT.Core.TVirtualPad.Interface where
import Data.Word
import Data.Int
import Foreign.C
import Foreign.Ptr
import FFICXX.Runtime.Cast
import HROOT.Core.TVirtualPad.RawType
import HROOT.Core.TObject.Interface
import HROOT.Core.TAttLine.Interface
import HROOT.Core.TAttFill.Interface
import HROOT.Core.TAttPad.Interface
import HROOT.Core.TQObject.Interface

class (ITObject a, ITAttLine a, ITAttFill a, ITAttPad a,
       ITQObject a) =>
      ITVirtualPad a where
        cd :: () => a -> CInt -> IO a
        
        divide_tvirtualpad ::
                             () => a -> CInt -> CInt -> CFloat -> CFloat -> CInt -> IO ()
        
        modified :: () => a -> CBool -> IO ()
        
        range ::
                () => a -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
        
        setLogx :: () => a -> CInt -> IO ()
        
        setLogy :: () => a -> CInt -> IO ()
        
        setLogz :: () => a -> CInt -> IO ()
        
        update :: () => a -> IO ()

upcastTVirtualPad ::
                  forall a . (FPtr a, ITVirtualPad a) => a -> TVirtualPad
upcastTVirtualPad :: forall a. (FPtr a, ITVirtualPad a) => a -> TVirtualPad
upcastTVirtualPad a
h
  = let fh :: Ptr (Raw a)
fh = a -> Ptr (Raw a)
forall a. FPtr a => a -> Ptr (Raw a)
get_fptr a
h
        Ptr RawTVirtualPad
fh2 :: Ptr RawTVirtualPad = Ptr (Raw a) -> Ptr RawTVirtualPad
forall a b. Ptr a -> Ptr b
castPtr Ptr (Raw a)
fh
      in Ptr (Raw TVirtualPad) -> TVirtualPad
forall a. FPtr a => Ptr (Raw a) -> a
cast_fptr_to_obj Ptr (Raw TVirtualPad)
Ptr RawTVirtualPad
fh2

downcastTVirtualPad ::
                    forall a . (FPtr a, ITVirtualPad a) => TVirtualPad -> a
downcastTVirtualPad :: forall a. (FPtr a, ITVirtualPad a) => TVirtualPad -> a
downcastTVirtualPad TVirtualPad
h
  = let fh :: Ptr (Raw TVirtualPad)
fh = TVirtualPad -> Ptr (Raw TVirtualPad)
forall a. FPtr a => a -> Ptr (Raw a)
get_fptr TVirtualPad
h
        fh2 :: Ptr (Raw a)
fh2 = Ptr RawTVirtualPad -> Ptr (Raw a)
forall a b. Ptr a -> Ptr b
castPtr Ptr (Raw TVirtualPad)
Ptr RawTVirtualPad
fh
      in Ptr (Raw a) -> a
forall a. FPtr a => Ptr (Raw a) -> a
cast_fptr_to_obj Ptr (Raw a)
fh2