{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Core.TVirtualPad.Implementation where
import Data.Monoid
import Data.Word
import Data.Int
import Foreign.C
import Foreign.Ptr
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import System.IO.Unsafe
import FFICXX.Runtime.Cast
import FFICXX.Runtime.CodeGen.Cxx
import FFICXX.Runtime.TH
import HROOT.Core.TVirtualPad.RawType
import HROOT.Core.TVirtualPad.FFI
import HROOT.Core.TVirtualPad.Interface
import HROOT.Core.TVirtualPad.Cast
import HROOT.Core.TVirtualPad.RawType
import HROOT.Core.TVirtualPad.Cast
import HROOT.Core.TVirtualPad.Interface
import HROOT.Core.TClass.RawType
import HROOT.Core.TClass.Cast
import HROOT.Core.TClass.Interface
import HROOT.Core.TObject.RawType
import HROOT.Core.TObject.Cast
import HROOT.Core.TObject.Interface
import HROOT.Core.TAttLine.RawType
import HROOT.Core.TAttLine.Cast
import HROOT.Core.TAttLine.Interface
import HROOT.Core.TAttFill.RawType
import HROOT.Core.TAttFill.Cast
import HROOT.Core.TAttFill.Interface
import HROOT.Core.TAttPad.RawType
import HROOT.Core.TAttPad.Cast
import HROOT.Core.TAttPad.Interface
import HROOT.Core.TQObject.RawType
import HROOT.Core.TQObject.Cast
import HROOT.Core.TQObject.Interface
import STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => ITVirtualPad (TVirtualPad) where
        cd :: TVirtualPad -> CInt -> IO TVirtualPad
cd = (Ptr RawTVirtualPad -> CInt -> IO (Ptr RawTVirtualPad))
-> TVirtualPad -> CInt -> IO TVirtualPad
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CInt -> IO (Ptr RawTVirtualPad)
c_tvirtualpad_cd
        divide_tvirtualpad :: TVirtualPad -> CInt -> CInt -> CFloat -> CFloat -> CInt -> IO ()
divide_tvirtualpad = (Ptr RawTVirtualPad
 -> CInt -> CInt -> CFloat -> CFloat -> CInt -> IO ())
-> TVirtualPad -> CInt -> CInt -> CFloat -> CFloat -> CInt -> IO ()
forall a ca x1 cx1 x2 cx2 x3 cx3 x4 cx4 x5 cx5 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable x4 cx4, Castable x5 cx5, Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> IO cy)
-> a -> x1 -> x2 -> x3 -> x4 -> x5 -> IO y
xform5 Ptr RawTVirtualPad
-> CInt -> CInt -> CFloat -> CFloat -> CInt -> IO ()
c_tvirtualpad_divide_tvirtualpad
        modified :: TVirtualPad -> CBool -> IO ()
modified = (Ptr RawTVirtualPad -> CBool -> IO ())
-> TVirtualPad -> CBool -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CBool -> IO ()
c_tvirtualpad_modified
        range :: TVirtualPad -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
range = (Ptr RawTVirtualPad
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO ())
-> TVirtualPad -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
forall a ca x1 cx1 x2 cx2 x3 cx3 x4 cx4 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable x4 cx4, Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> cx4 -> IO cy)
-> a -> x1 -> x2 -> x3 -> x4 -> IO y
xform4 Ptr RawTVirtualPad
-> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_tvirtualpad_range
        setLogx :: TVirtualPad -> CInt -> IO ()
setLogx = (Ptr RawTVirtualPad -> CInt -> IO ())
-> TVirtualPad -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CInt -> IO ()
c_tvirtualpad_setlogx
        setLogy :: TVirtualPad -> CInt -> IO ()
setLogy = (Ptr RawTVirtualPad -> CInt -> IO ())
-> TVirtualPad -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CInt -> IO ()
c_tvirtualpad_setlogy
        setLogz :: TVirtualPad -> CInt -> IO ()
setLogz = (Ptr RawTVirtualPad -> CInt -> IO ())
-> TVirtualPad -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CInt -> IO ()
c_tvirtualpad_setlogz
        update :: TVirtualPad -> IO ()
update = (Ptr RawTVirtualPad -> IO ()) -> TVirtualPad -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO ()
c_tvirtualpad_update

instance () => ITObject (TVirtualPad) where
        clear :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO ()
clear = (Ptr RawTVirtualPad -> CString -> IO ())
-> TVirtualPad -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO ()
c_tvirtualpad_clear
        draw :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO ()
draw = (Ptr RawTVirtualPad -> CString -> IO ())
-> TVirtualPad -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO ()
c_tvirtualpad_draw
        findObject :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO TObject
findObject = (Ptr RawTVirtualPad -> CString -> IO (Ptr RawTObject))
-> TVirtualPad -> c0 -> IO TObject
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO (Ptr RawTObject)
c_tvirtualpad_findobject
        getName :: TVirtualPad -> IO CString
getName = (Ptr RawTVirtualPad -> IO CString) -> TVirtualPad -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO CString
c_tvirtualpad_getname
        isA :: TVirtualPad -> IO TClass
isA = (Ptr RawTVirtualPad -> IO (Ptr RawTClass))
-> TVirtualPad -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO (Ptr RawTClass)
c_tvirtualpad_isa
        paint :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO ()
paint = (Ptr RawTVirtualPad -> CString -> IO ())
-> TVirtualPad -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO ()
c_tvirtualpad_paint
        printObj :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO ()
printObj = (Ptr RawTVirtualPad -> CString -> IO ())
-> TVirtualPad -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO ()
c_tvirtualpad_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TVirtualPad -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTVirtualPad -> CString -> CString -> IO ())
-> TVirtualPad -> c0 -> c1 -> IO ()
forall a ca x1 cx1 x2 cx2 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) =>
(ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y
xform2 Ptr RawTVirtualPad -> CString -> CString -> IO ()
c_tvirtualpad_saveas
        write :: forall c0.
Castable c0 CString =>
TVirtualPad -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTVirtualPad -> CString -> CInt -> CInt -> IO CInt)
-> TVirtualPad -> c0 -> CInt -> CInt -> IO CInt
forall a ca x1 cx1 x2 cx2 x3 cx3 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> IO cy) -> a -> x1 -> x2 -> x3 -> IO y
xform3 Ptr RawTVirtualPad -> CString -> CInt -> CInt -> IO CInt
c_tvirtualpad_write
        write_ :: TVirtualPad -> IO CInt
write_ = (Ptr RawTVirtualPad -> IO CInt) -> TVirtualPad -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO CInt
c_tvirtualpad_write_

instance () => ITAttLine (TVirtualPad) where
        getLineColor :: TVirtualPad -> IO CShort
getLineColor = (Ptr RawTVirtualPad -> IO CShort) -> TVirtualPad -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO CShort
c_tvirtualpad_getlinecolor
        getLineStyle :: TVirtualPad -> IO CShort
getLineStyle = (Ptr RawTVirtualPad -> IO CShort) -> TVirtualPad -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO CShort
c_tvirtualpad_getlinestyle
        getLineWidth :: TVirtualPad -> IO CShort
getLineWidth = (Ptr RawTVirtualPad -> IO CShort) -> TVirtualPad -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO CShort
c_tvirtualpad_getlinewidth
        resetAttLine :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO ()
resetAttLine = (Ptr RawTVirtualPad -> CString -> IO ())
-> TVirtualPad -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO ()
c_tvirtualpad_resetattline
        setLineAttributes :: TVirtualPad -> IO ()
setLineAttributes = (Ptr RawTVirtualPad -> IO ()) -> TVirtualPad -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO ()
c_tvirtualpad_setlineattributes
        setLineColor :: TVirtualPad -> CShort -> IO ()
setLineColor = (Ptr RawTVirtualPad -> CShort -> IO ())
-> TVirtualPad -> CShort -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CShort -> IO ()
c_tvirtualpad_setlinecolor
        setLineStyle :: TVirtualPad -> CShort -> IO ()
setLineStyle = (Ptr RawTVirtualPad -> CShort -> IO ())
-> TVirtualPad -> CShort -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CShort -> IO ()
c_tvirtualpad_setlinestyle
        setLineWidth :: TVirtualPad -> CShort -> IO ()
setLineWidth = (Ptr RawTVirtualPad -> CShort -> IO ())
-> TVirtualPad -> CShort -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CShort -> IO ()
c_tvirtualpad_setlinewidth

instance () => ITAttFill (TVirtualPad) where
        setFillColor :: TVirtualPad -> CInt -> IO ()
setFillColor = (Ptr RawTVirtualPad -> CInt -> IO ())
-> TVirtualPad -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CInt -> IO ()
c_tvirtualpad_setfillcolor
        setFillStyle :: TVirtualPad -> CInt -> IO ()
setFillStyle = (Ptr RawTVirtualPad -> CInt -> IO ())
-> TVirtualPad -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CInt -> IO ()
c_tvirtualpad_setfillstyle

instance () => ITAttPad (TVirtualPad) where
        resetAttPad :: forall c0. Castable c0 CString => TVirtualPad -> c0 -> IO ()
resetAttPad = (Ptr RawTVirtualPad -> CString -> IO ())
-> TVirtualPad -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CString -> IO ()
c_tvirtualpad_resetattpad
        setBottomMargin :: TVirtualPad -> CFloat -> IO ()
setBottomMargin = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setbottommargin
        setLeftMargin :: TVirtualPad -> CFloat -> IO ()
setLeftMargin = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setleftmargin
        setRightMargin :: TVirtualPad -> CFloat -> IO ()
setRightMargin = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setrightmargin
        setTopMargin :: TVirtualPad -> CFloat -> IO ()
setTopMargin = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_settopmargin
        setMargin :: TVirtualPad -> CFloat -> CFloat -> CFloat -> CFloat -> IO ()
setMargin = (Ptr RawTVirtualPad
 -> CFloat -> CFloat -> CFloat -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> CFloat -> CFloat -> CFloat -> IO ()
forall a ca x1 cx1 x2 cx2 x3 cx3 x4 cx4 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable x4 cx4, Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> cx4 -> IO cy)
-> a -> x1 -> x2 -> x3 -> x4 -> IO y
xform4 Ptr RawTVirtualPad -> CFloat -> CFloat -> CFloat -> CFloat -> IO ()
c_tvirtualpad_setmargin
        setAfile :: TVirtualPad -> CFloat -> IO ()
setAfile = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setafile
        setXfile :: TVirtualPad -> CFloat -> IO ()
setXfile = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setxfile
        setYfile :: TVirtualPad -> CFloat -> IO ()
setYfile = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setyfile
        setAstat :: TVirtualPad -> CFloat -> IO ()
setAstat = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setastat
        setXstat :: TVirtualPad -> CFloat -> IO ()
setXstat = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setxstat
        setYstat :: TVirtualPad -> CFloat -> IO ()
setYstat = (Ptr RawTVirtualPad -> CFloat -> IO ())
-> TVirtualPad -> CFloat -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTVirtualPad -> CFloat -> IO ()
c_tvirtualpad_setystat

instance () => ITQObject (TVirtualPad) where

instance () => IDeletable (TVirtualPad) where
        delete :: TVirtualPad -> IO ()
delete = (Ptr RawTVirtualPad -> IO ()) -> TVirtualPad -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTVirtualPad -> IO ()
c_tvirtualpad_delete