{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Math.TRandom.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.Math.TRandom.RawType
import HROOT.Math.TRandom.FFI
import HROOT.Math.TRandom.Interface
import HROOT.Math.TRandom.Cast
import HROOT.Math.TRandom.RawType
import HROOT.Math.TRandom.Cast
import HROOT.Math.TRandom.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.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 () => ITRandom (TRandom) where
        getSeed :: TRandom -> IO CInt
getSeed = (Ptr RawTRandom -> IO CInt) -> TRandom -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTRandom -> IO CInt
c_trandom_getseed
        gaus :: TRandom -> CDouble -> CDouble -> IO CDouble
gaus = (Ptr RawTRandom -> CDouble -> CDouble -> IO CDouble)
-> TRandom -> CDouble -> CDouble -> IO CDouble
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 RawTRandom -> CDouble -> CDouble -> IO CDouble
c_trandom_gaus
        setSeed :: TRandom -> CInt -> IO ()
setSeed = (Ptr RawTRandom -> CInt -> IO ()) -> TRandom -> 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 RawTRandom -> CInt -> IO ()
c_trandom_setseed
        uniform :: TRandom -> CDouble -> CDouble -> IO CDouble
uniform = (Ptr RawTRandom -> CDouble -> CDouble -> IO CDouble)
-> TRandom -> CDouble -> CDouble -> IO CDouble
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 RawTRandom -> CDouble -> CDouble -> IO CDouble
c_trandom_uniform

instance () => ITNamed (TRandom) where
        setName :: forall c0. Castable c0 CString => TRandom -> c0 -> IO ()
setName = (Ptr RawTRandom -> CString -> IO ()) -> TRandom -> 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 RawTRandom -> CString -> IO ()
c_trandom_setname
        setNameTitle :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TRandom -> c0 -> c1 -> IO ()
setNameTitle = (Ptr RawTRandom -> CString -> CString -> IO ())
-> TRandom -> 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 RawTRandom -> CString -> CString -> IO ()
c_trandom_setnametitle
        setTitle :: forall c0. Castable c0 CString => TRandom -> c0 -> IO ()
setTitle = (Ptr RawTRandom -> CString -> IO ()) -> TRandom -> 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 RawTRandom -> CString -> IO ()
c_trandom_settitle

instance () => ITObject (TRandom) where
        clear :: forall c0. Castable c0 CString => TRandom -> c0 -> IO ()
clear = (Ptr RawTRandom -> CString -> IO ()) -> TRandom -> 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 RawTRandom -> CString -> IO ()
c_trandom_clear
        draw :: forall c0. Castable c0 CString => TRandom -> c0 -> IO ()
draw = (Ptr RawTRandom -> CString -> IO ()) -> TRandom -> 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 RawTRandom -> CString -> IO ()
c_trandom_draw
        findObject :: forall c0. Castable c0 CString => TRandom -> c0 -> IO TObject
findObject = (Ptr RawTRandom -> CString -> IO (Ptr RawTObject))
-> TRandom -> 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 RawTRandom -> CString -> IO (Ptr RawTObject)
c_trandom_findobject
        getName :: TRandom -> IO CString
getName = (Ptr RawTRandom -> IO CString) -> TRandom -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTRandom -> IO CString
c_trandom_getname
        isA :: TRandom -> IO TClass
isA = (Ptr RawTRandom -> IO (Ptr RawTClass)) -> TRandom -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTRandom -> IO (Ptr RawTClass)
c_trandom_isa
        paint :: forall c0. Castable c0 CString => TRandom -> c0 -> IO ()
paint = (Ptr RawTRandom -> CString -> IO ()) -> TRandom -> 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 RawTRandom -> CString -> IO ()
c_trandom_paint
        printObj :: forall c0. Castable c0 CString => TRandom -> c0 -> IO ()
printObj = (Ptr RawTRandom -> CString -> IO ()) -> TRandom -> 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 RawTRandom -> CString -> IO ()
c_trandom_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TRandom -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTRandom -> CString -> CString -> IO ())
-> TRandom -> 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 RawTRandom -> CString -> CString -> IO ()
c_trandom_saveas
        write :: forall c0.
Castable c0 CString =>
TRandom -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTRandom -> CString -> CInt -> CInt -> IO CInt)
-> TRandom -> 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 RawTRandom -> CString -> CInt -> CInt -> IO CInt
c_trandom_write
        write_ :: TRandom -> IO CInt
write_ = (Ptr RawTRandom -> IO CInt) -> TRandom -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTRandom -> IO CInt
c_trandom_write_

instance () => IDeletable (TRandom) where
        delete :: TRandom -> IO ()
delete = (Ptr RawTRandom -> IO ()) -> TRandom -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTRandom -> IO ()
c_trandom_delete

newTRandom :: () => CInt -> IO TRandom
newTRandom :: CInt -> IO TRandom
newTRandom = (CInt -> IO (Ptr RawTRandom)) -> CInt -> IO TRandom
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 CInt -> IO (Ptr RawTRandom)
c_trandom_newtrandom