{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Graf.TArrow.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.Graf.TArrow.RawType
import HROOT.Graf.TArrow.FFI
import HROOT.Graf.TArrow.Interface
import HROOT.Graf.TArrow.Cast
import HROOT.Graf.TArrow.RawType
import HROOT.Graf.TArrow.Cast
import HROOT.Graf.TArrow.Interface
import HROOT.Core.TClass.RawType
import HROOT.Core.TClass.Cast
import HROOT.Core.TClass.Interface
import HROOT.Graf.TLine.RawType
import HROOT.Graf.TLine.Cast
import HROOT.Graf.TLine.Interface
import HROOT.Core.TAttFill.RawType
import HROOT.Core.TAttFill.Cast
import HROOT.Core.TAttFill.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 STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => ITArrow (TArrow) where

instance () => ITLine (TArrow) where
        drawLine :: TArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
drawLine = (Ptr RawTArrow
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine))
-> TArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
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 RawTArrow
-> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine)
c_tarrow_drawline
        drawLineNDC :: TArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
drawLineNDC = (Ptr RawTArrow
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine))
-> TArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
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 RawTArrow
-> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine)
c_tarrow_drawlinendc
        paintLine :: TArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
paintLine = (Ptr RawTArrow
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO ())
-> TArrow -> 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 RawTArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_tarrow_paintline
        paintLineNDC :: TArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
paintLineNDC = (Ptr RawTArrow
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO ())
-> TArrow -> 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 RawTArrow -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_tarrow_paintlinendc
        setX1 :: TArrow -> CDouble -> IO ()
setX1 = (Ptr RawTArrow -> CDouble -> IO ()) -> TArrow -> CDouble -> 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 RawTArrow -> CDouble -> IO ()
c_tarrow_setx1
        setX2 :: TArrow -> CDouble -> IO ()
setX2 = (Ptr RawTArrow -> CDouble -> IO ()) -> TArrow -> CDouble -> 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 RawTArrow -> CDouble -> IO ()
c_tarrow_setx2
        setY1 :: TArrow -> CDouble -> IO ()
setY1 = (Ptr RawTArrow -> CDouble -> IO ()) -> TArrow -> CDouble -> 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 RawTArrow -> CDouble -> IO ()
c_tarrow_sety1
        setY2 :: TArrow -> CDouble -> IO ()
setY2 = (Ptr RawTArrow -> CDouble -> IO ()) -> TArrow -> CDouble -> 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 RawTArrow -> CDouble -> IO ()
c_tarrow_sety2

instance () => ITAttFill (TArrow) where
        setFillColor :: TArrow -> CInt -> IO ()
setFillColor = (Ptr RawTArrow -> CInt -> IO ()) -> TArrow -> 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 RawTArrow -> CInt -> IO ()
c_tarrow_setfillcolor
        setFillStyle :: TArrow -> CInt -> IO ()
setFillStyle = (Ptr RawTArrow -> CInt -> IO ()) -> TArrow -> 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 RawTArrow -> CInt -> IO ()
c_tarrow_setfillstyle

instance () => ITObject (TArrow) where
        clear :: forall c0. Castable c0 CString => TArrow -> c0 -> IO ()
clear = (Ptr RawTArrow -> CString -> IO ()) -> TArrow -> 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 RawTArrow -> CString -> IO ()
c_tarrow_clear
        draw :: forall c0. Castable c0 CString => TArrow -> c0 -> IO ()
draw = (Ptr RawTArrow -> CString -> IO ()) -> TArrow -> 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 RawTArrow -> CString -> IO ()
c_tarrow_draw
        findObject :: forall c0. Castable c0 CString => TArrow -> c0 -> IO TObject
findObject = (Ptr RawTArrow -> CString -> IO (Ptr RawTObject))
-> TArrow -> 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 RawTArrow -> CString -> IO (Ptr RawTObject)
c_tarrow_findobject
        getName :: TArrow -> IO CString
getName = (Ptr RawTArrow -> IO CString) -> TArrow -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO CString
c_tarrow_getname
        isA :: TArrow -> IO TClass
isA = (Ptr RawTArrow -> IO (Ptr RawTClass)) -> TArrow -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO (Ptr RawTClass)
c_tarrow_isa
        paint :: forall c0. Castable c0 CString => TArrow -> c0 -> IO ()
paint = (Ptr RawTArrow -> CString -> IO ()) -> TArrow -> 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 RawTArrow -> CString -> IO ()
c_tarrow_paint
        printObj :: forall c0. Castable c0 CString => TArrow -> c0 -> IO ()
printObj = (Ptr RawTArrow -> CString -> IO ()) -> TArrow -> 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 RawTArrow -> CString -> IO ()
c_tarrow_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TArrow -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTArrow -> CString -> CString -> IO ())
-> TArrow -> 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 RawTArrow -> CString -> CString -> IO ()
c_tarrow_saveas
        write :: forall c0.
Castable c0 CString =>
TArrow -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTArrow -> CString -> CInt -> CInt -> IO CInt)
-> TArrow -> 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 RawTArrow -> CString -> CInt -> CInt -> IO CInt
c_tarrow_write
        write_ :: TArrow -> IO CInt
write_ = (Ptr RawTArrow -> IO CInt) -> TArrow -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO CInt
c_tarrow_write_

instance () => ITAttLine (TArrow) where
        getLineColor :: TArrow -> IO CShort
getLineColor = (Ptr RawTArrow -> IO CShort) -> TArrow -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO CShort
c_tarrow_getlinecolor
        getLineStyle :: TArrow -> IO CShort
getLineStyle = (Ptr RawTArrow -> IO CShort) -> TArrow -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO CShort
c_tarrow_getlinestyle
        getLineWidth :: TArrow -> IO CShort
getLineWidth = (Ptr RawTArrow -> IO CShort) -> TArrow -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO CShort
c_tarrow_getlinewidth
        resetAttLine :: forall c0. Castable c0 CString => TArrow -> c0 -> IO ()
resetAttLine = (Ptr RawTArrow -> CString -> IO ()) -> TArrow -> 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 RawTArrow -> CString -> IO ()
c_tarrow_resetattline
        setLineAttributes :: TArrow -> IO ()
setLineAttributes = (Ptr RawTArrow -> IO ()) -> TArrow -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO ()
c_tarrow_setlineattributes
        setLineColor :: TArrow -> CShort -> IO ()
setLineColor = (Ptr RawTArrow -> CShort -> IO ()) -> TArrow -> 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 RawTArrow -> CShort -> IO ()
c_tarrow_setlinecolor
        setLineStyle :: TArrow -> CShort -> IO ()
setLineStyle = (Ptr RawTArrow -> CShort -> IO ()) -> TArrow -> 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 RawTArrow -> CShort -> IO ()
c_tarrow_setlinestyle
        setLineWidth :: TArrow -> CShort -> IO ()
setLineWidth = (Ptr RawTArrow -> CShort -> IO ()) -> TArrow -> 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 RawTArrow -> CShort -> IO ()
c_tarrow_setlinewidth

instance () => IDeletable (TArrow) where
        delete :: TArrow -> IO ()
delete = (Ptr RawTArrow -> IO ()) -> TArrow -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTArrow -> IO ()
c_tarrow_delete

newTArrow ::
            (Castable c0 CString) =>
            CDouble ->
              CDouble -> CDouble -> CDouble -> CFloat -> c0 -> IO TArrow
newTArrow :: forall c0.
Castable c0 CString =>
CDouble
-> CDouble -> CDouble -> CDouble -> CFloat -> c0 -> IO TArrow
newTArrow = (CDouble
 -> CDouble
 -> CDouble
 -> CDouble
 -> CFloat
 -> CString
 -> IO (Ptr RawTArrow))
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> CFloat
-> c0
-> IO TArrow
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 CDouble
-> CDouble
-> CDouble
-> CDouble
-> CFloat
-> CString
-> IO (Ptr RawTArrow)
c_tarrow_newtarrow