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

instance () => ITLine (TLine) where
        drawLine :: TLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
drawLine = (Ptr RawTLine
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine))
-> TLine -> 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 RawTLine
-> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine)
c_tline_drawline
        drawLineNDC :: TLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
drawLineNDC = (Ptr RawTLine
 -> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine))
-> TLine -> 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 RawTLine
-> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine)
c_tline_drawlinendc
        paintLine :: TLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
paintLine = (Ptr RawTLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO ())
-> TLine -> 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 RawTLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_tline_paintline
        paintLineNDC :: TLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
paintLineNDC = (Ptr RawTLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO ())
-> TLine -> 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 RawTLine -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_tline_paintlinendc
        setX1 :: TLine -> CDouble -> IO ()
setX1 = (Ptr RawTLine -> CDouble -> IO ()) -> TLine -> 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 RawTLine -> CDouble -> IO ()
c_tline_setx1
        setX2 :: TLine -> CDouble -> IO ()
setX2 = (Ptr RawTLine -> CDouble -> IO ()) -> TLine -> 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 RawTLine -> CDouble -> IO ()
c_tline_setx2
        setY1 :: TLine -> CDouble -> IO ()
setY1 = (Ptr RawTLine -> CDouble -> IO ()) -> TLine -> 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 RawTLine -> CDouble -> IO ()
c_tline_sety1
        setY2 :: TLine -> CDouble -> IO ()
setY2 = (Ptr RawTLine -> CDouble -> IO ()) -> TLine -> 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 RawTLine -> CDouble -> IO ()
c_tline_sety2

instance () => ITObject (TLine) where
        clear :: forall c0. Castable c0 CString => TLine -> c0 -> IO ()
clear = (Ptr RawTLine -> CString -> IO ()) -> TLine -> 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 RawTLine -> CString -> IO ()
c_tline_clear
        draw :: forall c0. Castable c0 CString => TLine -> c0 -> IO ()
draw = (Ptr RawTLine -> CString -> IO ()) -> TLine -> 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 RawTLine -> CString -> IO ()
c_tline_draw
        findObject :: forall c0. Castable c0 CString => TLine -> c0 -> IO TObject
findObject = (Ptr RawTLine -> CString -> IO (Ptr RawTObject))
-> TLine -> 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 RawTLine -> CString -> IO (Ptr RawTObject)
c_tline_findobject
        getName :: TLine -> IO CString
getName = (Ptr RawTLine -> IO CString) -> TLine -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CString
c_tline_getname
        isA :: TLine -> IO TClass
isA = (Ptr RawTLine -> IO (Ptr RawTClass)) -> TLine -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO (Ptr RawTClass)
c_tline_isa
        paint :: forall c0. Castable c0 CString => TLine -> c0 -> IO ()
paint = (Ptr RawTLine -> CString -> IO ()) -> TLine -> 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 RawTLine -> CString -> IO ()
c_tline_paint
        printObj :: forall c0. Castable c0 CString => TLine -> c0 -> IO ()
printObj = (Ptr RawTLine -> CString -> IO ()) -> TLine -> 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 RawTLine -> CString -> IO ()
c_tline_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TLine -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTLine -> CString -> CString -> IO ())
-> TLine -> 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 RawTLine -> CString -> CString -> IO ()
c_tline_saveas
        write :: forall c0.
Castable c0 CString =>
TLine -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTLine -> CString -> CInt -> CInt -> IO CInt)
-> TLine -> 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 RawTLine -> CString -> CInt -> CInt -> IO CInt
c_tline_write
        write_ :: TLine -> IO CInt
write_ = (Ptr RawTLine -> IO CInt) -> TLine -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CInt
c_tline_write_

instance () => ITAttLine (TLine) where
        getLineColor :: TLine -> IO CShort
getLineColor = (Ptr RawTLine -> IO CShort) -> TLine -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CShort
c_tline_getlinecolor
        getLineStyle :: TLine -> IO CShort
getLineStyle = (Ptr RawTLine -> IO CShort) -> TLine -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CShort
c_tline_getlinestyle
        getLineWidth :: TLine -> IO CShort
getLineWidth = (Ptr RawTLine -> IO CShort) -> TLine -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CShort
c_tline_getlinewidth
        resetAttLine :: forall c0. Castable c0 CString => TLine -> c0 -> IO ()
resetAttLine = (Ptr RawTLine -> CString -> IO ()) -> TLine -> 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 RawTLine -> CString -> IO ()
c_tline_resetattline
        setLineAttributes :: TLine -> IO ()
setLineAttributes = (Ptr RawTLine -> IO ()) -> TLine -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO ()
c_tline_setlineattributes
        setLineColor :: TLine -> CShort -> IO ()
setLineColor = (Ptr RawTLine -> CShort -> IO ()) -> TLine -> 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 RawTLine -> CShort -> IO ()
c_tline_setlinecolor
        setLineStyle :: TLine -> CShort -> IO ()
setLineStyle = (Ptr RawTLine -> CShort -> IO ()) -> TLine -> 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 RawTLine -> CShort -> IO ()
c_tline_setlinestyle
        setLineWidth :: TLine -> CShort -> IO ()
setLineWidth = (Ptr RawTLine -> CShort -> IO ()) -> TLine -> 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 RawTLine -> CShort -> IO ()
c_tline_setlinewidth

instance () => IDeletable (TLine) where
        delete :: TLine -> IO ()
delete = (Ptr RawTLine -> IO ()) -> TLine -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO ()
c_tline_delete

newTLine ::
           () => CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
newTLine :: CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
newTLine = (CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine))
-> CDouble -> CDouble -> CDouble -> CDouble -> IO TLine
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 CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTLine)
c_tline_newtline

tLine_GetX1 :: () => TLine -> IO CDouble
tLine_GetX1 :: TLine -> IO CDouble
tLine_GetX1 = (Ptr RawTLine -> IO CDouble) -> TLine -> IO CDouble
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CDouble
c_tline_tline_getx1

tLine_GetX2 :: () => TLine -> IO CDouble
tLine_GetX2 :: TLine -> IO CDouble
tLine_GetX2 = (Ptr RawTLine -> IO CDouble) -> TLine -> IO CDouble
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CDouble
c_tline_tline_getx2

tLine_GetY1 :: () => TLine -> IO CDouble
tLine_GetY1 :: TLine -> IO CDouble
tLine_GetY1 = (Ptr RawTLine -> IO CDouble) -> TLine -> IO CDouble
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CDouble
c_tline_tline_gety1

tLine_GetY2 :: () => TLine -> IO CDouble
tLine_GetY2 :: TLine -> IO CDouble
tLine_GetY2 = (Ptr RawTLine -> IO CDouble) -> TLine -> IO CDouble
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CDouble
c_tline_tline_gety2

tLine_IsHorizontal :: () => TLine -> IO CBool
tLine_IsHorizontal :: TLine -> IO CBool
tLine_IsHorizontal = (Ptr RawTLine -> IO CBool) -> TLine -> IO CBool
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CBool
c_tline_tline_ishorizontal

tLine_IsVertical :: () => TLine -> IO CBool
tLine_IsVertical :: TLine -> IO CBool
tLine_IsVertical = (Ptr RawTLine -> IO CBool) -> TLine -> IO CBool
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTLine -> IO CBool
c_tline_tline_isvertical

tLine_SetHorizontal :: () => TLine -> CBool -> IO ()
tLine_SetHorizontal :: TLine -> CBool -> IO ()
tLine_SetHorizontal = (Ptr RawTLine -> CBool -> IO ()) -> TLine -> 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 RawTLine -> CBool -> IO ()
c_tline_tline_sethorizontal

tLine_SetVertical :: () => TLine -> CBool -> IO ()
tLine_SetVertical :: TLine -> CBool -> IO ()
tLine_SetVertical = (Ptr RawTLine -> CBool -> IO ()) -> TLine -> 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 RawTLine -> CBool -> IO ()
c_tline_tline_setvertical