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

instance () => ITShape (TShape) where

instance () => ITNamed (TShape) where
        setName :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
setName = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_setname
        setNameTitle :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TShape -> c0 -> c1 -> IO ()
setNameTitle = (Ptr RawTShape -> CString -> CString -> IO ())
-> TShape -> 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 RawTShape -> CString -> CString -> IO ()
c_tshape_setnametitle
        setTitle :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
setTitle = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_settitle

instance () => ITAttLine (TShape) where
        getLineColor :: TShape -> IO CShort
getLineColor = (Ptr RawTShape -> IO CShort) -> TShape -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO CShort
c_tshape_getlinecolor
        getLineStyle :: TShape -> IO CShort
getLineStyle = (Ptr RawTShape -> IO CShort) -> TShape -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO CShort
c_tshape_getlinestyle
        getLineWidth :: TShape -> IO CShort
getLineWidth = (Ptr RawTShape -> IO CShort) -> TShape -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO CShort
c_tshape_getlinewidth
        resetAttLine :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
resetAttLine = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_resetattline
        setLineAttributes :: TShape -> IO ()
setLineAttributes = (Ptr RawTShape -> IO ()) -> TShape -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO ()
c_tshape_setlineattributes
        setLineColor :: TShape -> CShort -> IO ()
setLineColor = (Ptr RawTShape -> CShort -> IO ()) -> TShape -> 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 RawTShape -> CShort -> IO ()
c_tshape_setlinecolor
        setLineStyle :: TShape -> CShort -> IO ()
setLineStyle = (Ptr RawTShape -> CShort -> IO ()) -> TShape -> 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 RawTShape -> CShort -> IO ()
c_tshape_setlinestyle
        setLineWidth :: TShape -> CShort -> IO ()
setLineWidth = (Ptr RawTShape -> CShort -> IO ()) -> TShape -> 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 RawTShape -> CShort -> IO ()
c_tshape_setlinewidth

instance () => ITAttFill (TShape) where
        setFillColor :: TShape -> CInt -> IO ()
setFillColor = (Ptr RawTShape -> CInt -> IO ()) -> TShape -> 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 RawTShape -> CInt -> IO ()
c_tshape_setfillcolor
        setFillStyle :: TShape -> CInt -> IO ()
setFillStyle = (Ptr RawTShape -> CInt -> IO ()) -> TShape -> 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 RawTShape -> CInt -> IO ()
c_tshape_setfillstyle

instance () => ITAtt3D (TShape) where

instance () => ITObject (TShape) where
        clear :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
clear = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_clear
        draw :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
draw = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_draw
        findObject :: forall c0. Castable c0 CString => TShape -> c0 -> IO TObject
findObject = (Ptr RawTShape -> CString -> IO (Ptr RawTObject))
-> TShape -> 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 RawTShape -> CString -> IO (Ptr RawTObject)
c_tshape_findobject
        getName :: TShape -> IO CString
getName = (Ptr RawTShape -> IO CString) -> TShape -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO CString
c_tshape_getname
        isA :: TShape -> IO TClass
isA = (Ptr RawTShape -> IO (Ptr RawTClass)) -> TShape -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO (Ptr RawTClass)
c_tshape_isa
        paint :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
paint = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_paint
        printObj :: forall c0. Castable c0 CString => TShape -> c0 -> IO ()
printObj = (Ptr RawTShape -> CString -> IO ()) -> TShape -> 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 RawTShape -> CString -> IO ()
c_tshape_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TShape -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTShape -> CString -> CString -> IO ())
-> TShape -> 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 RawTShape -> CString -> CString -> IO ()
c_tshape_saveas
        write :: forall c0.
Castable c0 CString =>
TShape -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTShape -> CString -> CInt -> CInt -> IO CInt)
-> TShape -> 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 RawTShape -> CString -> CInt -> CInt -> IO CInt
c_tshape_write
        write_ :: TShape -> IO CInt
write_ = (Ptr RawTShape -> IO CInt) -> TShape -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO CInt
c_tshape_write_

instance () => IDeletable (TShape) where
        delete :: TShape -> IO ()
delete = (Ptr RawTShape -> IO ()) -> TShape -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTShape -> IO ()
c_tshape_delete

newTShape ::
            (Castable c2 CString, Castable c1 CString, Castable c0 CString) =>
            c0 -> c1 -> c2 -> IO TShape
newTShape :: forall c2 c1 c0.
(Castable c2 CString, Castable c1 CString, Castable c0 CString) =>
c0 -> c1 -> c2 -> IO TShape
newTShape = (CString -> CString -> CString -> IO (Ptr RawTShape))
-> c0 -> c1 -> c2 -> IO TShape
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 CString -> CString -> CString -> IO (Ptr RawTShape)
c_tshape_newtshape