HROOT 0.6.2 → 0.6.3
raw patch · 3 files changed
+2890/−2 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- HROOT.AddOn: castTObject :: Exist TObject -> IO (EGADTType TObject)
- HROOT.AddOn: class GADTTypeable a where { data family GADTType a :: * -> *; data family EGADTType a :: *; }
- HROOT.AddOn: data BottomType
- HROOT.AddOn: instance GADTTypeable TObject
+ HROOT.Class.Existential: castTApplication :: Exist TApplication -> IO (EGADTType TApplication)
+ HROOT.Class.Existential: castTArc :: Exist TArc -> IO (EGADTType TArc)
+ HROOT.Class.Existential: castTArrow :: Exist TArrow -> IO (EGADTType TArrow)
+ HROOT.Class.Existential: castTAttParticle :: Exist TAttParticle -> IO (EGADTType TAttParticle)
+ HROOT.Class.Existential: castTAxis :: Exist TAxis -> IO (EGADTType TAxis)
+ HROOT.Class.Existential: castTBRIK :: Exist TBRIK -> IO (EGADTType TBRIK)
+ HROOT.Class.Existential: castTBox :: Exist TBox -> IO (EGADTType TBox)
+ HROOT.Class.Existential: castTBranch :: Exist TBranch -> IO (EGADTType TBranch)
+ HROOT.Class.Existential: castTButton :: Exist TButton -> IO (EGADTType TButton)
+ HROOT.Class.Existential: castTCanvas :: Exist TCanvas -> IO (EGADTType TCanvas)
+ HROOT.Class.Existential: castTChain :: Exist TChain -> IO (EGADTType TChain)
+ HROOT.Class.Existential: castTClass :: Exist TClass -> IO (EGADTType TClass)
+ HROOT.Class.Existential: castTCrown :: Exist TCrown -> IO (EGADTType TCrown)
+ HROOT.Class.Existential: castTCurlyArc :: Exist TCurlyArc -> IO (EGADTType TCurlyArc)
+ HROOT.Class.Existential: castTCurlyLine :: Exist TCurlyLine -> IO (EGADTType TCurlyLine)
+ HROOT.Class.Existential: castTCutG :: Exist TCutG -> IO (EGADTType TCutG)
+ HROOT.Class.Existential: castTDialogCanvas :: Exist TDialogCanvas -> IO (EGADTType TDialogCanvas)
+ HROOT.Class.Existential: castTDiamond :: Exist TDiamond -> IO (EGADTType TDiamond)
+ HROOT.Class.Existential: castTDirectory :: Exist TDirectory -> IO (EGADTType TDirectory)
+ HROOT.Class.Existential: castTDirectoryFile :: Exist TDirectoryFile -> IO (EGADTType TDirectoryFile)
+ HROOT.Class.Existential: castTEfficiency :: Exist TEfficiency -> IO (EGADTType TEfficiency)
+ HROOT.Class.Existential: castTEllipse :: Exist TEllipse -> IO (EGADTType TEllipse)
+ HROOT.Class.Existential: castTEvePad :: Exist TEvePad -> IO (EGADTType TEvePad)
+ HROOT.Class.Existential: castTF1 :: Exist TF1 -> IO (EGADTType TF1)
+ HROOT.Class.Existential: castTFile :: Exist TFile -> IO (EGADTType TFile)
+ HROOT.Class.Existential: castTFormula :: Exist TFormula -> IO (EGADTType TFormula)
+ HROOT.Class.Existential: castTFrame :: Exist TFrame -> IO (EGADTType TFrame)
+ HROOT.Class.Existential: castTGaxis :: Exist TGaxis -> IO (EGADTType TGaxis)
+ HROOT.Class.Existential: castTGraph :: Exist TGraph -> IO (EGADTType TGraph)
+ HROOT.Class.Existential: castTGraphAsymmErrors :: Exist TGraphAsymmErrors -> IO (EGADTType TGraphAsymmErrors)
+ HROOT.Class.Existential: castTGraphBentErrors :: Exist TGraphBentErrors -> IO (EGADTType TGraphBentErrors)
+ HROOT.Class.Existential: castTGraphErrors :: Exist TGraphErrors -> IO (EGADTType TGraphErrors)
+ HROOT.Class.Existential: castTGraphPolar :: Exist TGraphPolar -> IO (EGADTType TGraphPolar)
+ HROOT.Class.Existential: castTGraphQQ :: Exist TGraphQQ -> IO (EGADTType TGraphQQ)
+ HROOT.Class.Existential: castTGroupButton :: Exist TGroupButton -> IO (EGADTType TGroupButton)
+ HROOT.Class.Existential: castTH1 :: Exist TH1 -> IO (EGADTType TH1)
+ HROOT.Class.Existential: castTH1C :: Exist TH1C -> IO (EGADTType TH1C)
+ HROOT.Class.Existential: castTH1D :: Exist TH1D -> IO (EGADTType TH1D)
+ HROOT.Class.Existential: castTH1F :: Exist TH1F -> IO (EGADTType TH1F)
+ HROOT.Class.Existential: castTH1I :: Exist TH1I -> IO (EGADTType TH1I)
+ HROOT.Class.Existential: castTH1S :: Exist TH1S -> IO (EGADTType TH1S)
+ HROOT.Class.Existential: castTH2 :: Exist TH2 -> IO (EGADTType TH2)
+ HROOT.Class.Existential: castTH2C :: Exist TH2C -> IO (EGADTType TH2C)
+ HROOT.Class.Existential: castTH2D :: Exist TH2D -> IO (EGADTType TH2D)
+ HROOT.Class.Existential: castTH2F :: Exist TH2F -> IO (EGADTType TH2F)
+ HROOT.Class.Existential: castTH2I :: Exist TH2I -> IO (EGADTType TH2I)
+ HROOT.Class.Existential: castTH2Poly :: Exist TH2Poly -> IO (EGADTType TH2Poly)
+ HROOT.Class.Existential: castTH2S :: Exist TH2S -> IO (EGADTType TH2S)
+ HROOT.Class.Existential: castTH3 :: Exist TH3 -> IO (EGADTType TH3)
+ HROOT.Class.Existential: castTH3C :: Exist TH3C -> IO (EGADTType TH3C)
+ HROOT.Class.Existential: castTH3D :: Exist TH3D -> IO (EGADTType TH3D)
+ HROOT.Class.Existential: castTH3F :: Exist TH3F -> IO (EGADTType TH3F)
+ HROOT.Class.Existential: castTH3I :: Exist TH3I -> IO (EGADTType TH3I)
+ HROOT.Class.Existential: castTH3S :: Exist TH3S -> IO (EGADTType TH3S)
+ HROOT.Class.Existential: castTHStack :: Exist THStack -> IO (EGADTType THStack)
+ HROOT.Class.Existential: castTInspectCanvas :: Exist TInspectCanvas -> IO (EGADTType TInspectCanvas)
+ HROOT.Class.Existential: castTLatex :: Exist TLatex -> IO (EGADTType TLatex)
+ HROOT.Class.Existential: castTLegend :: Exist TLegend -> IO (EGADTType TLegend)
+ HROOT.Class.Existential: castTLine :: Exist TLine -> IO (EGADTType TLine)
+ HROOT.Class.Existential: castTNamed :: Exist TNamed -> IO (EGADTType TNamed)
+ HROOT.Class.Existential: castTNtuple :: Exist TNtuple -> IO (EGADTType TNtuple)
+ HROOT.Class.Existential: castTNtupleD :: Exist TNtupleD -> IO (EGADTType TNtupleD)
+ HROOT.Class.Existential: castTObject :: Exist TObject -> IO (EGADTType TObject)
+ HROOT.Class.Existential: castTPCON :: Exist TPCON -> IO (EGADTType TPCON)
+ HROOT.Class.Existential: castTPad :: Exist TPad -> IO (EGADTType TPad)
+ HROOT.Class.Existential: castTPave :: Exist TPave -> IO (EGADTType TPave)
+ HROOT.Class.Existential: castTPaveClass :: Exist TPaveClass -> IO (EGADTType TPaveClass)
+ HROOT.Class.Existential: castTPaveLabel :: Exist TPaveLabel -> IO (EGADTType TPaveLabel)
+ HROOT.Class.Existential: castTPaveStats :: Exist TPaveStats -> IO (EGADTType TPaveStats)
+ HROOT.Class.Existential: castTPaveText :: Exist TPaveText -> IO (EGADTType TPaveText)
+ HROOT.Class.Existential: castTPavesText :: Exist TPavesText -> IO (EGADTType TPavesText)
+ HROOT.Class.Existential: castTPolyLine :: Exist TPolyLine -> IO (EGADTType TPolyLine)
+ HROOT.Class.Existential: castTRandom :: Exist TRandom -> IO (EGADTType TRandom)
+ HROOT.Class.Existential: castTRint :: Exist TRint -> IO (EGADTType TRint)
+ HROOT.Class.Existential: castTSPHE :: Exist TSPHE -> IO (EGADTType TSPHE)
+ HROOT.Class.Existential: castTShape :: Exist TShape -> IO (EGADTType TShape)
+ HROOT.Class.Existential: castTSlider :: Exist TSlider -> IO (EGADTType TSlider)
+ HROOT.Class.Existential: castTSliderBox :: Exist TSliderBox -> IO (EGADTType TSliderBox)
+ HROOT.Class.Existential: castTTUBE :: Exist TTUBE -> IO (EGADTType TTUBE)
+ HROOT.Class.Existential: castTText :: Exist TText -> IO (EGADTType TText)
+ HROOT.Class.Existential: castTTree :: Exist TTree -> IO (EGADTType TTree)
+ HROOT.Class.Existential: castTTreePlayer :: Exist TTreePlayer -> IO (EGADTType TTreePlayer)
+ HROOT.Class.Existential: castTTreeSQL :: Exist TTreeSQL -> IO (EGADTType TTreeSQL)
+ HROOT.Class.Existential: castTVirtualPad :: Exist TVirtualPad -> IO (EGADTType TVirtualPad)
+ HROOT.Class.Existential: castTVirtualTreePlayer :: Exist TVirtualTreePlayer -> IO (EGADTType TVirtualTreePlayer)
+ HROOT.Class.Existential: castTWbox :: Exist TWbox -> IO (EGADTType TWbox)
+ HROOT.Class.Existential: castTXTRU :: Exist TXTRU -> IO (EGADTType TXTRU)
+ HROOT.Class.Existential: class GADTTypeable a where { data family GADTType a :: * -> *; data family EGADTType a :: *; }
+ HROOT.Class.Existential: data BottomType
+ HROOT.Class.Existential: instance GADTTypeable TApplication
+ HROOT.Class.Existential: instance GADTTypeable TArc
+ HROOT.Class.Existential: instance GADTTypeable TArrow
+ HROOT.Class.Existential: instance GADTTypeable TAttParticle
+ HROOT.Class.Existential: instance GADTTypeable TAxis
+ HROOT.Class.Existential: instance GADTTypeable TBRIK
+ HROOT.Class.Existential: instance GADTTypeable TBox
+ HROOT.Class.Existential: instance GADTTypeable TBranch
+ HROOT.Class.Existential: instance GADTTypeable TButton
+ HROOT.Class.Existential: instance GADTTypeable TCanvas
+ HROOT.Class.Existential: instance GADTTypeable TChain
+ HROOT.Class.Existential: instance GADTTypeable TClass
+ HROOT.Class.Existential: instance GADTTypeable TCrown
+ HROOT.Class.Existential: instance GADTTypeable TCurlyArc
+ HROOT.Class.Existential: instance GADTTypeable TCurlyLine
+ HROOT.Class.Existential: instance GADTTypeable TCutG
+ HROOT.Class.Existential: instance GADTTypeable TDialogCanvas
+ HROOT.Class.Existential: instance GADTTypeable TDiamond
+ HROOT.Class.Existential: instance GADTTypeable TDirectory
+ HROOT.Class.Existential: instance GADTTypeable TDirectoryFile
+ HROOT.Class.Existential: instance GADTTypeable TEfficiency
+ HROOT.Class.Existential: instance GADTTypeable TEllipse
+ HROOT.Class.Existential: instance GADTTypeable TEvePad
+ HROOT.Class.Existential: instance GADTTypeable TF1
+ HROOT.Class.Existential: instance GADTTypeable TFile
+ HROOT.Class.Existential: instance GADTTypeable TFormula
+ HROOT.Class.Existential: instance GADTTypeable TFrame
+ HROOT.Class.Existential: instance GADTTypeable TGaxis
+ HROOT.Class.Existential: instance GADTTypeable TGraph
+ HROOT.Class.Existential: instance GADTTypeable TGraphAsymmErrors
+ HROOT.Class.Existential: instance GADTTypeable TGraphBentErrors
+ HROOT.Class.Existential: instance GADTTypeable TGraphErrors
+ HROOT.Class.Existential: instance GADTTypeable TGraphPolar
+ HROOT.Class.Existential: instance GADTTypeable TGraphQQ
+ HROOT.Class.Existential: instance GADTTypeable TGroupButton
+ HROOT.Class.Existential: instance GADTTypeable TH1
+ HROOT.Class.Existential: instance GADTTypeable TH1C
+ HROOT.Class.Existential: instance GADTTypeable TH1D
+ HROOT.Class.Existential: instance GADTTypeable TH1F
+ HROOT.Class.Existential: instance GADTTypeable TH1I
+ HROOT.Class.Existential: instance GADTTypeable TH1S
+ HROOT.Class.Existential: instance GADTTypeable TH2
+ HROOT.Class.Existential: instance GADTTypeable TH2C
+ HROOT.Class.Existential: instance GADTTypeable TH2D
+ HROOT.Class.Existential: instance GADTTypeable TH2F
+ HROOT.Class.Existential: instance GADTTypeable TH2I
+ HROOT.Class.Existential: instance GADTTypeable TH2Poly
+ HROOT.Class.Existential: instance GADTTypeable TH2S
+ HROOT.Class.Existential: instance GADTTypeable TH3
+ HROOT.Class.Existential: instance GADTTypeable TH3C
+ HROOT.Class.Existential: instance GADTTypeable TH3D
+ HROOT.Class.Existential: instance GADTTypeable TH3F
+ HROOT.Class.Existential: instance GADTTypeable TH3I
+ HROOT.Class.Existential: instance GADTTypeable TH3S
+ HROOT.Class.Existential: instance GADTTypeable THStack
+ HROOT.Class.Existential: instance GADTTypeable TInspectCanvas
+ HROOT.Class.Existential: instance GADTTypeable TLatex
+ HROOT.Class.Existential: instance GADTTypeable TLegend
+ HROOT.Class.Existential: instance GADTTypeable TLine
+ HROOT.Class.Existential: instance GADTTypeable TNamed
+ HROOT.Class.Existential: instance GADTTypeable TNtuple
+ HROOT.Class.Existential: instance GADTTypeable TNtupleD
+ HROOT.Class.Existential: instance GADTTypeable TObject
+ HROOT.Class.Existential: instance GADTTypeable TPCON
+ HROOT.Class.Existential: instance GADTTypeable TPad
+ HROOT.Class.Existential: instance GADTTypeable TPave
+ HROOT.Class.Existential: instance GADTTypeable TPaveClass
+ HROOT.Class.Existential: instance GADTTypeable TPaveLabel
+ HROOT.Class.Existential: instance GADTTypeable TPaveStats
+ HROOT.Class.Existential: instance GADTTypeable TPaveText
+ HROOT.Class.Existential: instance GADTTypeable TPavesText
+ HROOT.Class.Existential: instance GADTTypeable TPolyLine
+ HROOT.Class.Existential: instance GADTTypeable TRandom
+ HROOT.Class.Existential: instance GADTTypeable TRint
+ HROOT.Class.Existential: instance GADTTypeable TSPHE
+ HROOT.Class.Existential: instance GADTTypeable TShape
+ HROOT.Class.Existential: instance GADTTypeable TSlider
+ HROOT.Class.Existential: instance GADTTypeable TSliderBox
+ HROOT.Class.Existential: instance GADTTypeable TTUBE
+ HROOT.Class.Existential: instance GADTTypeable TText
+ HROOT.Class.Existential: instance GADTTypeable TTree
+ HROOT.Class.Existential: instance GADTTypeable TTreePlayer
+ HROOT.Class.Existential: instance GADTTypeable TTreeSQL
+ HROOT.Class.Existential: instance GADTTypeable TVirtualPad
+ HROOT.Class.Existential: instance GADTTypeable TVirtualTreePlayer
+ HROOT.Class.Existential: instance GADTTypeable TWbox
+ HROOT.Class.Existential: instance GADTTypeable TXTRU
Files
- HROOT.cabal +2/−1
- src/HROOT/AddOn.hs +2/−1
- src/HROOT/Class/Existential.hs +2886/−0
HROOT.cabal view
@@ -1,5 +1,5 @@ Name: HROOT-Version: 0.6.2+Version: 0.6.3 Synopsis: Wrapper for ROOT Description: Haskell FFI binding for ROOT Homepage: http://ianwookim.org/HROOT@@ -35,6 +35,7 @@ HROOT.Class.Interface HROOT.Class.Implementation HROOT.Class.FFI+ HROOT.Class.Existential HROOT.AddOn HROOT.AddOnFunction HROOT.Class.TObject
src/HROOT/AddOn.hs view
@@ -2,6 +2,7 @@ module HROOT.AddOn where +{- --import Foreign.C import Foreign.ForeignPtr --import Foreign.Marshal.Array@@ -38,5 +39,5 @@ in return . EGADTTObject . GADTTObjectTH1F $ obj' _ -> return . EGADTTObject $ GADTTObjectBottom -+-}
+ src/HROOT/Class/Existential.hs view
@@ -0,0 +1,2886 @@+{-# LANGUAGE TypeFamilies, GADTs, ExistentialQuantification, EmptyDataDecls #-}++module HROOT.Class.Existential where++--import Foreign.C +import Foreign.ForeignPtr+--import Foreign.Marshal.Array+++import HROOT.Class.Interface+import HROOT.Class.Implementation ()++data BottomType++class GADTTypeable a where+ data GADTType a :: * -> *+ data EGADTType a :: *++instance GADTTypeable TRandom where+ data GADTType TRandom a where + GADTTRandomTRandom :: TRandom -> GADTType TRandom TRandom+ GADTTRandomBottom :: GADTType TRandom BottomType+ data EGADTType TRandom = forall a. EGADTTRandom (GADTType TRandom a)++castTRandom :: Exist TRandom -> IO (EGADTType TRandom)+castTRandom eobj = do + let obj = TRandom (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TRandom" -> case obj of+ TRandom fptr -> let obj' = TRandom (castForeignPtr fptr :: ForeignPtr RawTRandom)+ in return . EGADTTRandom . GADTTRandomTRandom $ obj'+ _ -> return . EGADTTRandom $ GADTTRandomBottom++++++instance GADTTypeable TRint where+ data GADTType TRint a where + GADTTRintTRint :: TRint -> GADTType TRint TRint+ GADTTRintBottom :: GADTType TRint BottomType+ data EGADTType TRint = forall a. EGADTTRint (GADTType TRint a)++castTRint :: Exist TRint -> IO (EGADTType TRint)+castTRint eobj = do + let obj = TRint (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TRint" -> case obj of+ TRint fptr -> let obj' = TRint (castForeignPtr fptr :: ForeignPtr RawTRint)+ in return . EGADTTRint . GADTTRintTRint $ obj'+ _ -> return . EGADTTRint $ GADTTRintBottom++++++instance GADTTypeable TApplication where+ data GADTType TApplication a where + GADTTApplicationTApplication :: TApplication -> GADTType TApplication TApplication+ GADTTApplicationTRint :: TRint -> GADTType TApplication TRint+ GADTTApplicationBottom :: GADTType TApplication BottomType+ data EGADTType TApplication = forall a. EGADTTApplication (GADTType TApplication a)++castTApplication :: Exist TApplication -> IO (EGADTType TApplication)+castTApplication eobj = do + let obj = TApplication (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TApplication" -> case obj of+ TApplication fptr -> let obj' = TApplication (castForeignPtr fptr :: ForeignPtr RawTApplication)+ in return . EGADTTApplication . GADTTApplicationTApplication $ obj'+ "TRint" -> case obj of+ TApplication fptr -> let obj' = TRint (castForeignPtr fptr :: ForeignPtr RawTRint)+ in return . EGADTTApplication . GADTTApplicationTRint $ obj'+ _ -> return . EGADTTApplication $ GADTTApplicationBottom++++++instance GADTTypeable TSlider where+ data GADTType TSlider a where + GADTTSliderTSlider :: TSlider -> GADTType TSlider TSlider+ GADTTSliderBottom :: GADTType TSlider BottomType+ data EGADTType TSlider = forall a. EGADTTSlider (GADTType TSlider a)++castTSlider :: Exist TSlider -> IO (EGADTType TSlider)+castTSlider eobj = do + let obj = TSlider (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TSlider" -> case obj of+ TSlider fptr -> let obj' = TSlider (castForeignPtr fptr :: ForeignPtr RawTSlider)+ in return . EGADTTSlider . GADTTSliderTSlider $ obj'+ _ -> return . EGADTTSlider $ GADTTSliderBottom++++++instance GADTTypeable TEvePad where+ data GADTType TEvePad a where + GADTTEvePadTEvePad :: TEvePad -> GADTType TEvePad TEvePad+ GADTTEvePadBottom :: GADTType TEvePad BottomType+ data EGADTType TEvePad = forall a. EGADTTEvePad (GADTType TEvePad a)++castTEvePad :: Exist TEvePad -> IO (EGADTType TEvePad)+castTEvePad eobj = do + let obj = TEvePad (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TEvePad" -> case obj of+ TEvePad fptr -> let obj' = TEvePad (castForeignPtr fptr :: ForeignPtr RawTEvePad)+ in return . EGADTTEvePad . GADTTEvePadTEvePad $ obj'+ _ -> return . EGADTTEvePad $ GADTTEvePadBottom++++++instance GADTTypeable TInspectCanvas where+ data GADTType TInspectCanvas a where + GADTTInspectCanvasTInspectCanvas :: TInspectCanvas -> GADTType TInspectCanvas TInspectCanvas+ GADTTInspectCanvasBottom :: GADTType TInspectCanvas BottomType+ data EGADTType TInspectCanvas = forall a. EGADTTInspectCanvas (GADTType TInspectCanvas a)++castTInspectCanvas :: Exist TInspectCanvas -> IO (EGADTType TInspectCanvas)+castTInspectCanvas eobj = do + let obj = TInspectCanvas (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TInspectCanvas" -> case obj of+ TInspectCanvas fptr -> let obj' = TInspectCanvas (castForeignPtr fptr :: ForeignPtr RawTInspectCanvas)+ in return . EGADTTInspectCanvas . GADTTInspectCanvasTInspectCanvas $ obj'+ _ -> return . EGADTTInspectCanvas $ GADTTInspectCanvasBottom++++++instance GADTTypeable TDialogCanvas where+ data GADTType TDialogCanvas a where + GADTTDialogCanvasTDialogCanvas :: TDialogCanvas -> GADTType TDialogCanvas TDialogCanvas+ GADTTDialogCanvasBottom :: GADTType TDialogCanvas BottomType+ data EGADTType TDialogCanvas = forall a. EGADTTDialogCanvas (GADTType TDialogCanvas a)++castTDialogCanvas :: Exist TDialogCanvas -> IO (EGADTType TDialogCanvas)+castTDialogCanvas eobj = do + let obj = TDialogCanvas (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TDialogCanvas" -> case obj of+ TDialogCanvas fptr -> let obj' = TDialogCanvas (castForeignPtr fptr :: ForeignPtr RawTDialogCanvas)+ in return . EGADTTDialogCanvas . GADTTDialogCanvasTDialogCanvas $ obj'+ _ -> return . EGADTTDialogCanvas $ GADTTDialogCanvasBottom++++++instance GADTTypeable TCanvas where+ data GADTType TCanvas a where + GADTTCanvasTCanvas :: TCanvas -> GADTType TCanvas TCanvas+ GADTTCanvasTDialogCanvas :: TDialogCanvas -> GADTType TCanvas TDialogCanvas+ GADTTCanvasTInspectCanvas :: TInspectCanvas -> GADTType TCanvas TInspectCanvas+ GADTTCanvasBottom :: GADTType TCanvas BottomType+ data EGADTType TCanvas = forall a. EGADTTCanvas (GADTType TCanvas a)++castTCanvas :: Exist TCanvas -> IO (EGADTType TCanvas)+castTCanvas eobj = do + let obj = TCanvas (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TCanvas" -> case obj of+ TCanvas fptr -> let obj' = TCanvas (castForeignPtr fptr :: ForeignPtr RawTCanvas)+ in return . EGADTTCanvas . GADTTCanvasTCanvas $ obj'+ "TDialogCanvas" -> case obj of+ TCanvas fptr -> let obj' = TDialogCanvas (castForeignPtr fptr :: ForeignPtr RawTDialogCanvas)+ in return . EGADTTCanvas . GADTTCanvasTDialogCanvas $ obj'+ "TInspectCanvas" -> case obj of+ TCanvas fptr -> let obj' = TInspectCanvas (castForeignPtr fptr :: ForeignPtr RawTInspectCanvas)+ in return . EGADTTCanvas . GADTTCanvasTInspectCanvas $ obj'+ _ -> return . EGADTTCanvas $ GADTTCanvasBottom++++++instance GADTTypeable TGroupButton where+ data GADTType TGroupButton a where + GADTTGroupButtonTGroupButton :: TGroupButton -> GADTType TGroupButton TGroupButton+ GADTTGroupButtonBottom :: GADTType TGroupButton BottomType+ data EGADTType TGroupButton = forall a. EGADTTGroupButton (GADTType TGroupButton a)++castTGroupButton :: Exist TGroupButton -> IO (EGADTType TGroupButton)+castTGroupButton eobj = do + let obj = TGroupButton (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGroupButton" -> case obj of+ TGroupButton fptr -> let obj' = TGroupButton (castForeignPtr fptr :: ForeignPtr RawTGroupButton)+ in return . EGADTTGroupButton . GADTTGroupButtonTGroupButton $ obj'+ _ -> return . EGADTTGroupButton $ GADTTGroupButtonBottom++++++instance GADTTypeable TButton where+ data GADTType TButton a where + GADTTButtonTButton :: TButton -> GADTType TButton TButton+ GADTTButtonTGroupButton :: TGroupButton -> GADTType TButton TGroupButton+ GADTTButtonBottom :: GADTType TButton BottomType+ data EGADTType TButton = forall a. EGADTTButton (GADTType TButton a)++castTButton :: Exist TButton -> IO (EGADTType TButton)+castTButton eobj = do + let obj = TButton (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TButton" -> case obj of+ TButton fptr -> let obj' = TButton (castForeignPtr fptr :: ForeignPtr RawTButton)+ in return . EGADTTButton . GADTTButtonTButton $ obj'+ "TGroupButton" -> case obj of+ TButton fptr -> let obj' = TGroupButton (castForeignPtr fptr :: ForeignPtr RawTGroupButton)+ in return . EGADTTButton . GADTTButtonTGroupButton $ obj'+ _ -> return . EGADTTButton $ GADTTButtonBottom++++++instance GADTTypeable TPad where+ data GADTType TPad a where + GADTTPadTPad :: TPad -> GADTType TPad TPad+ GADTTPadTButton :: TButton -> GADTType TPad TButton+ GADTTPadTGroupButton :: TGroupButton -> GADTType TPad TGroupButton+ GADTTPadTCanvas :: TCanvas -> GADTType TPad TCanvas+ GADTTPadTDialogCanvas :: TDialogCanvas -> GADTType TPad TDialogCanvas+ GADTTPadTInspectCanvas :: TInspectCanvas -> GADTType TPad TInspectCanvas+ GADTTPadTEvePad :: TEvePad -> GADTType TPad TEvePad+ GADTTPadTSlider :: TSlider -> GADTType TPad TSlider+ GADTTPadBottom :: GADTType TPad BottomType+ data EGADTType TPad = forall a. EGADTTPad (GADTType TPad a)++castTPad :: Exist TPad -> IO (EGADTType TPad)+castTPad eobj = do + let obj = TPad (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPad" -> case obj of+ TPad fptr -> let obj' = TPad (castForeignPtr fptr :: ForeignPtr RawTPad)+ in return . EGADTTPad . GADTTPadTPad $ obj'+ "TButton" -> case obj of+ TPad fptr -> let obj' = TButton (castForeignPtr fptr :: ForeignPtr RawTButton)+ in return . EGADTTPad . GADTTPadTButton $ obj'+ "TGroupButton" -> case obj of+ TPad fptr -> let obj' = TGroupButton (castForeignPtr fptr :: ForeignPtr RawTGroupButton)+ in return . EGADTTPad . GADTTPadTGroupButton $ obj'+ "TCanvas" -> case obj of+ TPad fptr -> let obj' = TCanvas (castForeignPtr fptr :: ForeignPtr RawTCanvas)+ in return . EGADTTPad . GADTTPadTCanvas $ obj'+ "TDialogCanvas" -> case obj of+ TPad fptr -> let obj' = TDialogCanvas (castForeignPtr fptr :: ForeignPtr RawTDialogCanvas)+ in return . EGADTTPad . GADTTPadTDialogCanvas $ obj'+ "TInspectCanvas" -> case obj of+ TPad fptr -> let obj' = TInspectCanvas (castForeignPtr fptr :: ForeignPtr RawTInspectCanvas)+ in return . EGADTTPad . GADTTPadTInspectCanvas $ obj'+ "TEvePad" -> case obj of+ TPad fptr -> let obj' = TEvePad (castForeignPtr fptr :: ForeignPtr RawTEvePad)+ in return . EGADTTPad . GADTTPadTEvePad $ obj'+ "TSlider" -> case obj of+ TPad fptr -> let obj' = TSlider (castForeignPtr fptr :: ForeignPtr RawTSlider)+ in return . EGADTTPad . GADTTPadTSlider $ obj'+ _ -> return . EGADTTPad $ GADTTPadBottom++++++instance GADTTypeable TVirtualPad where+ data GADTType TVirtualPad a where + GADTTVirtualPadTVirtualPad :: TVirtualPad -> GADTType TVirtualPad TVirtualPad+ GADTTVirtualPadTPad :: TPad -> GADTType TVirtualPad TPad+ GADTTVirtualPadTButton :: TButton -> GADTType TVirtualPad TButton+ GADTTVirtualPadTGroupButton :: TGroupButton -> GADTType TVirtualPad TGroupButton+ GADTTVirtualPadTCanvas :: TCanvas -> GADTType TVirtualPad TCanvas+ GADTTVirtualPadTDialogCanvas :: TDialogCanvas -> GADTType TVirtualPad TDialogCanvas+ GADTTVirtualPadTInspectCanvas :: TInspectCanvas -> GADTType TVirtualPad TInspectCanvas+ GADTTVirtualPadTEvePad :: TEvePad -> GADTType TVirtualPad TEvePad+ GADTTVirtualPadTSlider :: TSlider -> GADTType TVirtualPad TSlider+ GADTTVirtualPadBottom :: GADTType TVirtualPad BottomType+ data EGADTType TVirtualPad = forall a. EGADTTVirtualPad (GADTType TVirtualPad a)++castTVirtualPad :: Exist TVirtualPad -> IO (EGADTType TVirtualPad)+castTVirtualPad eobj = do + let obj = TVirtualPad (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TVirtualPad" -> case obj of+ TVirtualPad fptr -> let obj' = TVirtualPad (castForeignPtr fptr :: ForeignPtr RawTVirtualPad)+ in return . EGADTTVirtualPad . GADTTVirtualPadTVirtualPad $ obj'+ "TPad" -> case obj of+ TVirtualPad fptr -> let obj' = TPad (castForeignPtr fptr :: ForeignPtr RawTPad)+ in return . EGADTTVirtualPad . GADTTVirtualPadTPad $ obj'+ "TButton" -> case obj of+ TVirtualPad fptr -> let obj' = TButton (castForeignPtr fptr :: ForeignPtr RawTButton)+ in return . EGADTTVirtualPad . GADTTVirtualPadTButton $ obj'+ "TGroupButton" -> case obj of+ TVirtualPad fptr -> let obj' = TGroupButton (castForeignPtr fptr :: ForeignPtr RawTGroupButton)+ in return . EGADTTVirtualPad . GADTTVirtualPadTGroupButton $ obj'+ "TCanvas" -> case obj of+ TVirtualPad fptr -> let obj' = TCanvas (castForeignPtr fptr :: ForeignPtr RawTCanvas)+ in return . EGADTTVirtualPad . GADTTVirtualPadTCanvas $ obj'+ "TDialogCanvas" -> case obj of+ TVirtualPad fptr -> let obj' = TDialogCanvas (castForeignPtr fptr :: ForeignPtr RawTDialogCanvas)+ in return . EGADTTVirtualPad . GADTTVirtualPadTDialogCanvas $ obj'+ "TInspectCanvas" -> case obj of+ TVirtualPad fptr -> let obj' = TInspectCanvas (castForeignPtr fptr :: ForeignPtr RawTInspectCanvas)+ in return . EGADTTVirtualPad . GADTTVirtualPadTInspectCanvas $ obj'+ "TEvePad" -> case obj of+ TVirtualPad fptr -> let obj' = TEvePad (castForeignPtr fptr :: ForeignPtr RawTEvePad)+ in return . EGADTTVirtualPad . GADTTVirtualPadTEvePad $ obj'+ "TSlider" -> case obj of+ TVirtualPad fptr -> let obj' = TSlider (castForeignPtr fptr :: ForeignPtr RawTSlider)+ in return . EGADTTVirtualPad . GADTTVirtualPadTSlider $ obj'+ _ -> return . EGADTTVirtualPad $ GADTTVirtualPadBottom++++++instance GADTTypeable TH3S where+ data GADTType TH3S a where + GADTTH3STH3S :: TH3S -> GADTType TH3S TH3S+ GADTTH3SBottom :: GADTType TH3S BottomType+ data EGADTType TH3S = forall a. EGADTTH3S (GADTType TH3S a)++castTH3S :: Exist TH3S -> IO (EGADTType TH3S)+castTH3S eobj = do + let obj = TH3S (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH3S" -> case obj of+ TH3S fptr -> let obj' = TH3S (castForeignPtr fptr :: ForeignPtr RawTH3S)+ in return . EGADTTH3S . GADTTH3STH3S $ obj'+ _ -> return . EGADTTH3S $ GADTTH3SBottom++++++instance GADTTypeable TH3I where+ data GADTType TH3I a where + GADTTH3ITH3I :: TH3I -> GADTType TH3I TH3I+ GADTTH3IBottom :: GADTType TH3I BottomType+ data EGADTType TH3I = forall a. EGADTTH3I (GADTType TH3I a)++castTH3I :: Exist TH3I -> IO (EGADTType TH3I)+castTH3I eobj = do + let obj = TH3I (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH3I" -> case obj of+ TH3I fptr -> let obj' = TH3I (castForeignPtr fptr :: ForeignPtr RawTH3I)+ in return . EGADTTH3I . GADTTH3ITH3I $ obj'+ _ -> return . EGADTTH3I $ GADTTH3IBottom++++++instance GADTTypeable TH3F where+ data GADTType TH3F a where + GADTTH3FTH3F :: TH3F -> GADTType TH3F TH3F+ GADTTH3FBottom :: GADTType TH3F BottomType+ data EGADTType TH3F = forall a. EGADTTH3F (GADTType TH3F a)++castTH3F :: Exist TH3F -> IO (EGADTType TH3F)+castTH3F eobj = do + let obj = TH3F (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH3F" -> case obj of+ TH3F fptr -> let obj' = TH3F (castForeignPtr fptr :: ForeignPtr RawTH3F)+ in return . EGADTTH3F . GADTTH3FTH3F $ obj'+ _ -> return . EGADTTH3F $ GADTTH3FBottom++++++instance GADTTypeable TH3D where+ data GADTType TH3D a where + GADTTH3DTH3D :: TH3D -> GADTType TH3D TH3D+ GADTTH3DBottom :: GADTType TH3D BottomType+ data EGADTType TH3D = forall a. EGADTTH3D (GADTType TH3D a)++castTH3D :: Exist TH3D -> IO (EGADTType TH3D)+castTH3D eobj = do + let obj = TH3D (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH3D" -> case obj of+ TH3D fptr -> let obj' = TH3D (castForeignPtr fptr :: ForeignPtr RawTH3D)+ in return . EGADTTH3D . GADTTH3DTH3D $ obj'+ _ -> return . EGADTTH3D $ GADTTH3DBottom++++++instance GADTTypeable TH3C where+ data GADTType TH3C a where + GADTTH3CTH3C :: TH3C -> GADTType TH3C TH3C+ GADTTH3CBottom :: GADTType TH3C BottomType+ data EGADTType TH3C = forall a. EGADTTH3C (GADTType TH3C a)++castTH3C :: Exist TH3C -> IO (EGADTType TH3C)+castTH3C eobj = do + let obj = TH3C (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH3C" -> case obj of+ TH3C fptr -> let obj' = TH3C (castForeignPtr fptr :: ForeignPtr RawTH3C)+ in return . EGADTTH3C . GADTTH3CTH3C $ obj'+ _ -> return . EGADTTH3C $ GADTTH3CBottom++++++instance GADTTypeable TH2S where+ data GADTType TH2S a where + GADTTH2STH2S :: TH2S -> GADTType TH2S TH2S+ GADTTH2SBottom :: GADTType TH2S BottomType+ data EGADTType TH2S = forall a. EGADTTH2S (GADTType TH2S a)++castTH2S :: Exist TH2S -> IO (EGADTType TH2S)+castTH2S eobj = do + let obj = TH2S (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2S" -> case obj of+ TH2S fptr -> let obj' = TH2S (castForeignPtr fptr :: ForeignPtr RawTH2S)+ in return . EGADTTH2S . GADTTH2STH2S $ obj'+ _ -> return . EGADTTH2S $ GADTTH2SBottom++++++instance GADTTypeable TH2Poly where+ data GADTType TH2Poly a where + GADTTH2PolyTH2Poly :: TH2Poly -> GADTType TH2Poly TH2Poly+ GADTTH2PolyBottom :: GADTType TH2Poly BottomType+ data EGADTType TH2Poly = forall a. EGADTTH2Poly (GADTType TH2Poly a)++castTH2Poly :: Exist TH2Poly -> IO (EGADTType TH2Poly)+castTH2Poly eobj = do + let obj = TH2Poly (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2Poly" -> case obj of+ TH2Poly fptr -> let obj' = TH2Poly (castForeignPtr fptr :: ForeignPtr RawTH2Poly)+ in return . EGADTTH2Poly . GADTTH2PolyTH2Poly $ obj'+ _ -> return . EGADTTH2Poly $ GADTTH2PolyBottom++++++instance GADTTypeable TH2I where+ data GADTType TH2I a where + GADTTH2ITH2I :: TH2I -> GADTType TH2I TH2I+ GADTTH2IBottom :: GADTType TH2I BottomType+ data EGADTType TH2I = forall a. EGADTTH2I (GADTType TH2I a)++castTH2I :: Exist TH2I -> IO (EGADTType TH2I)+castTH2I eobj = do + let obj = TH2I (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2I" -> case obj of+ TH2I fptr -> let obj' = TH2I (castForeignPtr fptr :: ForeignPtr RawTH2I)+ in return . EGADTTH2I . GADTTH2ITH2I $ obj'+ _ -> return . EGADTTH2I $ GADTTH2IBottom++++++instance GADTTypeable TH2F where+ data GADTType TH2F a where + GADTTH2FTH2F :: TH2F -> GADTType TH2F TH2F+ GADTTH2FBottom :: GADTType TH2F BottomType+ data EGADTType TH2F = forall a. EGADTTH2F (GADTType TH2F a)++castTH2F :: Exist TH2F -> IO (EGADTType TH2F)+castTH2F eobj = do + let obj = TH2F (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2F" -> case obj of+ TH2F fptr -> let obj' = TH2F (castForeignPtr fptr :: ForeignPtr RawTH2F)+ in return . EGADTTH2F . GADTTH2FTH2F $ obj'+ _ -> return . EGADTTH2F $ GADTTH2FBottom++++++instance GADTTypeable TH2D where+ data GADTType TH2D a where + GADTTH2DTH2D :: TH2D -> GADTType TH2D TH2D+ GADTTH2DBottom :: GADTType TH2D BottomType+ data EGADTType TH2D = forall a. EGADTTH2D (GADTType TH2D a)++castTH2D :: Exist TH2D -> IO (EGADTType TH2D)+castTH2D eobj = do + let obj = TH2D (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2D" -> case obj of+ TH2D fptr -> let obj' = TH2D (castForeignPtr fptr :: ForeignPtr RawTH2D)+ in return . EGADTTH2D . GADTTH2DTH2D $ obj'+ _ -> return . EGADTTH2D $ GADTTH2DBottom++++++instance GADTTypeable TH2C where+ data GADTType TH2C a where + GADTTH2CTH2C :: TH2C -> GADTType TH2C TH2C+ GADTTH2CBottom :: GADTType TH2C BottomType+ data EGADTType TH2C = forall a. EGADTTH2C (GADTType TH2C a)++castTH2C :: Exist TH2C -> IO (EGADTType TH2C)+castTH2C eobj = do + let obj = TH2C (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2C" -> case obj of+ TH2C fptr -> let obj' = TH2C (castForeignPtr fptr :: ForeignPtr RawTH2C)+ in return . EGADTTH2C . GADTTH2CTH2C $ obj'+ _ -> return . EGADTTH2C $ GADTTH2CBottom++++++instance GADTTypeable TH1S where+ data GADTType TH1S a where + GADTTH1STH1S :: TH1S -> GADTType TH1S TH1S+ GADTTH1SBottom :: GADTType TH1S BottomType+ data EGADTType TH1S = forall a. EGADTTH1S (GADTType TH1S a)++castTH1S :: Exist TH1S -> IO (EGADTType TH1S)+castTH1S eobj = do + let obj = TH1S (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH1S" -> case obj of+ TH1S fptr -> let obj' = TH1S (castForeignPtr fptr :: ForeignPtr RawTH1S)+ in return . EGADTTH1S . GADTTH1STH1S $ obj'+ _ -> return . EGADTTH1S $ GADTTH1SBottom++++++instance GADTTypeable TH1I where+ data GADTType TH1I a where + GADTTH1ITH1I :: TH1I -> GADTType TH1I TH1I+ GADTTH1IBottom :: GADTType TH1I BottomType+ data EGADTType TH1I = forall a. EGADTTH1I (GADTType TH1I a)++castTH1I :: Exist TH1I -> IO (EGADTType TH1I)+castTH1I eobj = do + let obj = TH1I (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH1I" -> case obj of+ TH1I fptr -> let obj' = TH1I (castForeignPtr fptr :: ForeignPtr RawTH1I)+ in return . EGADTTH1I . GADTTH1ITH1I $ obj'+ _ -> return . EGADTTH1I $ GADTTH1IBottom++++++instance GADTTypeable TH1F where+ data GADTType TH1F a where + GADTTH1FTH1F :: TH1F -> GADTType TH1F TH1F+ GADTTH1FBottom :: GADTType TH1F BottomType+ data EGADTType TH1F = forall a. EGADTTH1F (GADTType TH1F a)++castTH1F :: Exist TH1F -> IO (EGADTType TH1F)+castTH1F eobj = do + let obj = TH1F (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH1F" -> case obj of+ TH1F fptr -> let obj' = TH1F (castForeignPtr fptr :: ForeignPtr RawTH1F)+ in return . EGADTTH1F . GADTTH1FTH1F $ obj'+ _ -> return . EGADTTH1F $ GADTTH1FBottom++++++instance GADTTypeable TH1D where+ data GADTType TH1D a where + GADTTH1DTH1D :: TH1D -> GADTType TH1D TH1D+ GADTTH1DBottom :: GADTType TH1D BottomType+ data EGADTType TH1D = forall a. EGADTTH1D (GADTType TH1D a)++castTH1D :: Exist TH1D -> IO (EGADTType TH1D)+castTH1D eobj = do + let obj = TH1D (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH1D" -> case obj of+ TH1D fptr -> let obj' = TH1D (castForeignPtr fptr :: ForeignPtr RawTH1D)+ in return . EGADTTH1D . GADTTH1DTH1D $ obj'+ _ -> return . EGADTTH1D $ GADTTH1DBottom++++++instance GADTTypeable TH1C where+ data GADTType TH1C a where + GADTTH1CTH1C :: TH1C -> GADTType TH1C TH1C+ GADTTH1CBottom :: GADTType TH1C BottomType+ data EGADTType TH1C = forall a. EGADTTH1C (GADTType TH1C a)++castTH1C :: Exist TH1C -> IO (EGADTType TH1C)+castTH1C eobj = do + let obj = TH1C (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH1C" -> case obj of+ TH1C fptr -> let obj' = TH1C (castForeignPtr fptr :: ForeignPtr RawTH1C)+ in return . EGADTTH1C . GADTTH1CTH1C $ obj'+ _ -> return . EGADTTH1C $ GADTTH1CBottom++++++instance GADTTypeable TH3 where+ data GADTType TH3 a where + GADTTH3TH3 :: TH3 -> GADTType TH3 TH3+ GADTTH3TH3C :: TH3C -> GADTType TH3 TH3C+ GADTTH3TH3D :: TH3D -> GADTType TH3 TH3D+ GADTTH3TH3F :: TH3F -> GADTType TH3 TH3F+ GADTTH3TH3I :: TH3I -> GADTType TH3 TH3I+ GADTTH3TH3S :: TH3S -> GADTType TH3 TH3S+ GADTTH3Bottom :: GADTType TH3 BottomType+ data EGADTType TH3 = forall a. EGADTTH3 (GADTType TH3 a)++castTH3 :: Exist TH3 -> IO (EGADTType TH3)+castTH3 eobj = do + let obj = TH3 (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH3" -> case obj of+ TH3 fptr -> let obj' = TH3 (castForeignPtr fptr :: ForeignPtr RawTH3)+ in return . EGADTTH3 . GADTTH3TH3 $ obj'+ "TH3C" -> case obj of+ TH3 fptr -> let obj' = TH3C (castForeignPtr fptr :: ForeignPtr RawTH3C)+ in return . EGADTTH3 . GADTTH3TH3C $ obj'+ "TH3D" -> case obj of+ TH3 fptr -> let obj' = TH3D (castForeignPtr fptr :: ForeignPtr RawTH3D)+ in return . EGADTTH3 . GADTTH3TH3D $ obj'+ "TH3F" -> case obj of+ TH3 fptr -> let obj' = TH3F (castForeignPtr fptr :: ForeignPtr RawTH3F)+ in return . EGADTTH3 . GADTTH3TH3F $ obj'+ "TH3I" -> case obj of+ TH3 fptr -> let obj' = TH3I (castForeignPtr fptr :: ForeignPtr RawTH3I)+ in return . EGADTTH3 . GADTTH3TH3I $ obj'+ "TH3S" -> case obj of+ TH3 fptr -> let obj' = TH3S (castForeignPtr fptr :: ForeignPtr RawTH3S)+ in return . EGADTTH3 . GADTTH3TH3S $ obj'+ _ -> return . EGADTTH3 $ GADTTH3Bottom++++++instance GADTTypeable TH2 where+ data GADTType TH2 a where + GADTTH2TH2 :: TH2 -> GADTType TH2 TH2+ GADTTH2TH2C :: TH2C -> GADTType TH2 TH2C+ GADTTH2TH2D :: TH2D -> GADTType TH2 TH2D+ GADTTH2TH2F :: TH2F -> GADTType TH2 TH2F+ GADTTH2TH2I :: TH2I -> GADTType TH2 TH2I+ GADTTH2TH2Poly :: TH2Poly -> GADTType TH2 TH2Poly+ GADTTH2TH2S :: TH2S -> GADTType TH2 TH2S+ GADTTH2Bottom :: GADTType TH2 BottomType+ data EGADTType TH2 = forall a. EGADTTH2 (GADTType TH2 a)++castTH2 :: Exist TH2 -> IO (EGADTType TH2)+castTH2 eobj = do + let obj = TH2 (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH2" -> case obj of+ TH2 fptr -> let obj' = TH2 (castForeignPtr fptr :: ForeignPtr RawTH2)+ in return . EGADTTH2 . GADTTH2TH2 $ obj'+ "TH2C" -> case obj of+ TH2 fptr -> let obj' = TH2C (castForeignPtr fptr :: ForeignPtr RawTH2C)+ in return . EGADTTH2 . GADTTH2TH2C $ obj'+ "TH2D" -> case obj of+ TH2 fptr -> let obj' = TH2D (castForeignPtr fptr :: ForeignPtr RawTH2D)+ in return . EGADTTH2 . GADTTH2TH2D $ obj'+ "TH2F" -> case obj of+ TH2 fptr -> let obj' = TH2F (castForeignPtr fptr :: ForeignPtr RawTH2F)+ in return . EGADTTH2 . GADTTH2TH2F $ obj'+ "TH2I" -> case obj of+ TH2 fptr -> let obj' = TH2I (castForeignPtr fptr :: ForeignPtr RawTH2I)+ in return . EGADTTH2 . GADTTH2TH2I $ obj'+ "TH2Poly" -> case obj of+ TH2 fptr -> let obj' = TH2Poly (castForeignPtr fptr :: ForeignPtr RawTH2Poly)+ in return . EGADTTH2 . GADTTH2TH2Poly $ obj'+ "TH2S" -> case obj of+ TH2 fptr -> let obj' = TH2S (castForeignPtr fptr :: ForeignPtr RawTH2S)+ in return . EGADTTH2 . GADTTH2TH2S $ obj'+ _ -> return . EGADTTH2 $ GADTTH2Bottom++++++instance GADTTypeable TH1 where+ data GADTType TH1 a where + GADTTH1TH1 :: TH1 -> GADTType TH1 TH1+ GADTTH1TH2 :: TH2 -> GADTType TH1 TH2+ GADTTH1TH3 :: TH3 -> GADTType TH1 TH3+ GADTTH1TH1C :: TH1C -> GADTType TH1 TH1C+ GADTTH1TH1D :: TH1D -> GADTType TH1 TH1D+ GADTTH1TH1F :: TH1F -> GADTType TH1 TH1F+ GADTTH1TH1I :: TH1I -> GADTType TH1 TH1I+ GADTTH1TH1S :: TH1S -> GADTType TH1 TH1S+ GADTTH1TH2C :: TH2C -> GADTType TH1 TH2C+ GADTTH1TH2D :: TH2D -> GADTType TH1 TH2D+ GADTTH1TH2F :: TH2F -> GADTType TH1 TH2F+ GADTTH1TH2I :: TH2I -> GADTType TH1 TH2I+ GADTTH1TH2Poly :: TH2Poly -> GADTType TH1 TH2Poly+ GADTTH1TH2S :: TH2S -> GADTType TH1 TH2S+ GADTTH1TH3C :: TH3C -> GADTType TH1 TH3C+ GADTTH1TH3D :: TH3D -> GADTType TH1 TH3D+ GADTTH1TH3F :: TH3F -> GADTType TH1 TH3F+ GADTTH1TH3I :: TH3I -> GADTType TH1 TH3I+ GADTTH1TH3S :: TH3S -> GADTType TH1 TH3S+ GADTTH1Bottom :: GADTType TH1 BottomType+ data EGADTType TH1 = forall a. EGADTTH1 (GADTType TH1 a)++castTH1 :: Exist TH1 -> IO (EGADTType TH1)+castTH1 eobj = do + let obj = TH1 (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TH1" -> case obj of+ TH1 fptr -> let obj' = TH1 (castForeignPtr fptr :: ForeignPtr RawTH1)+ in return . EGADTTH1 . GADTTH1TH1 $ obj'+ "TH2" -> case obj of+ TH1 fptr -> let obj' = TH2 (castForeignPtr fptr :: ForeignPtr RawTH2)+ in return . EGADTTH1 . GADTTH1TH2 $ obj'+ "TH3" -> case obj of+ TH1 fptr -> let obj' = TH3 (castForeignPtr fptr :: ForeignPtr RawTH3)+ in return . EGADTTH1 . GADTTH1TH3 $ obj'+ "TH1C" -> case obj of+ TH1 fptr -> let obj' = TH1C (castForeignPtr fptr :: ForeignPtr RawTH1C)+ in return . EGADTTH1 . GADTTH1TH1C $ obj'+ "TH1D" -> case obj of+ TH1 fptr -> let obj' = TH1D (castForeignPtr fptr :: ForeignPtr RawTH1D)+ in return . EGADTTH1 . GADTTH1TH1D $ obj'+ "TH1F" -> case obj of+ TH1 fptr -> let obj' = TH1F (castForeignPtr fptr :: ForeignPtr RawTH1F)+ in return . EGADTTH1 . GADTTH1TH1F $ obj'+ "TH1I" -> case obj of+ TH1 fptr -> let obj' = TH1I (castForeignPtr fptr :: ForeignPtr RawTH1I)+ in return . EGADTTH1 . GADTTH1TH1I $ obj'+ "TH1S" -> case obj of+ TH1 fptr -> let obj' = TH1S (castForeignPtr fptr :: ForeignPtr RawTH1S)+ in return . EGADTTH1 . GADTTH1TH1S $ obj'+ "TH2C" -> case obj of+ TH1 fptr -> let obj' = TH2C (castForeignPtr fptr :: ForeignPtr RawTH2C)+ in return . EGADTTH1 . GADTTH1TH2C $ obj'+ "TH2D" -> case obj of+ TH1 fptr -> let obj' = TH2D (castForeignPtr fptr :: ForeignPtr RawTH2D)+ in return . EGADTTH1 . GADTTH1TH2D $ obj'+ "TH2F" -> case obj of+ TH1 fptr -> let obj' = TH2F (castForeignPtr fptr :: ForeignPtr RawTH2F)+ in return . EGADTTH1 . GADTTH1TH2F $ obj'+ "TH2I" -> case obj of+ TH1 fptr -> let obj' = TH2I (castForeignPtr fptr :: ForeignPtr RawTH2I)+ in return . EGADTTH1 . GADTTH1TH2I $ obj'+ "TH2Poly" -> case obj of+ TH1 fptr -> let obj' = TH2Poly (castForeignPtr fptr :: ForeignPtr RawTH2Poly)+ in return . EGADTTH1 . GADTTH1TH2Poly $ obj'+ "TH2S" -> case obj of+ TH1 fptr -> let obj' = TH2S (castForeignPtr fptr :: ForeignPtr RawTH2S)+ in return . EGADTTH1 . GADTTH1TH2S $ obj'+ "TH3C" -> case obj of+ TH1 fptr -> let obj' = TH3C (castForeignPtr fptr :: ForeignPtr RawTH3C)+ in return . EGADTTH1 . GADTTH1TH3C $ obj'+ "TH3D" -> case obj of+ TH1 fptr -> let obj' = TH3D (castForeignPtr fptr :: ForeignPtr RawTH3D)+ in return . EGADTTH1 . GADTTH1TH3D $ obj'+ "TH3F" -> case obj of+ TH1 fptr -> let obj' = TH3F (castForeignPtr fptr :: ForeignPtr RawTH3F)+ in return . EGADTTH1 . GADTTH1TH3F $ obj'+ "TH3I" -> case obj of+ TH1 fptr -> let obj' = TH3I (castForeignPtr fptr :: ForeignPtr RawTH3I)+ in return . EGADTTH1 . GADTTH1TH3I $ obj'+ "TH3S" -> case obj of+ TH1 fptr -> let obj' = TH3S (castForeignPtr fptr :: ForeignPtr RawTH3S)+ in return . EGADTTH1 . GADTTH1TH3S $ obj'+ _ -> return . EGADTTH1 $ GADTTH1Bottom++++++instance GADTTypeable TTreePlayer where+ data GADTType TTreePlayer a where + GADTTTreePlayerTTreePlayer :: TTreePlayer -> GADTType TTreePlayer TTreePlayer+ GADTTTreePlayerBottom :: GADTType TTreePlayer BottomType+ data EGADTType TTreePlayer = forall a. EGADTTTreePlayer (GADTType TTreePlayer a)++castTTreePlayer :: Exist TTreePlayer -> IO (EGADTType TTreePlayer)+castTTreePlayer eobj = do + let obj = TTreePlayer (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TTreePlayer" -> case obj of+ TTreePlayer fptr -> let obj' = TTreePlayer (castForeignPtr fptr :: ForeignPtr RawTTreePlayer)+ in return . EGADTTTreePlayer . GADTTTreePlayerTTreePlayer $ obj'+ _ -> return . EGADTTTreePlayer $ GADTTTreePlayerBottom++++++instance GADTTypeable TVirtualTreePlayer where+ data GADTType TVirtualTreePlayer a where + GADTTVirtualTreePlayerTVirtualTreePlayer :: TVirtualTreePlayer -> GADTType TVirtualTreePlayer TVirtualTreePlayer+ GADTTVirtualTreePlayerTTreePlayer :: TTreePlayer -> GADTType TVirtualTreePlayer TTreePlayer+ GADTTVirtualTreePlayerBottom :: GADTType TVirtualTreePlayer BottomType+ data EGADTType TVirtualTreePlayer = forall a. EGADTTVirtualTreePlayer (GADTType TVirtualTreePlayer a)++castTVirtualTreePlayer :: Exist TVirtualTreePlayer -> IO (EGADTType TVirtualTreePlayer)+castTVirtualTreePlayer eobj = do + let obj = TVirtualTreePlayer (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TVirtualTreePlayer" -> case obj of+ TVirtualTreePlayer fptr -> let obj' = TVirtualTreePlayer (castForeignPtr fptr :: ForeignPtr RawTVirtualTreePlayer)+ in return . EGADTTVirtualTreePlayer . GADTTVirtualTreePlayerTVirtualTreePlayer $ obj'+ "TTreePlayer" -> case obj of+ TVirtualTreePlayer fptr -> let obj' = TTreePlayer (castForeignPtr fptr :: ForeignPtr RawTTreePlayer)+ in return . EGADTTVirtualTreePlayer . GADTTVirtualTreePlayerTTreePlayer $ obj'+ _ -> return . EGADTTVirtualTreePlayer $ GADTTVirtualTreePlayerBottom++++++instance GADTTypeable TBranch where+ data GADTType TBranch a where + GADTTBranchTBranch :: TBranch -> GADTType TBranch TBranch+ GADTTBranchBottom :: GADTType TBranch BottomType+ data EGADTType TBranch = forall a. EGADTTBranch (GADTType TBranch a)++castTBranch :: Exist TBranch -> IO (EGADTType TBranch)+castTBranch eobj = do + let obj = TBranch (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TBranch" -> case obj of+ TBranch fptr -> let obj' = TBranch (castForeignPtr fptr :: ForeignPtr RawTBranch)+ in return . EGADTTBranch . GADTTBranchTBranch $ obj'+ _ -> return . EGADTTBranch $ GADTTBranchBottom++++++instance GADTTypeable TFile where+ data GADTType TFile a where + GADTTFileTFile :: TFile -> GADTType TFile TFile+ GADTTFileBottom :: GADTType TFile BottomType+ data EGADTType TFile = forall a. EGADTTFile (GADTType TFile a)++castTFile :: Exist TFile -> IO (EGADTType TFile)+castTFile eobj = do + let obj = TFile (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TFile" -> case obj of+ TFile fptr -> let obj' = TFile (castForeignPtr fptr :: ForeignPtr RawTFile)+ in return . EGADTTFile . GADTTFileTFile $ obj'+ _ -> return . EGADTTFile $ GADTTFileBottom++++++instance GADTTypeable TDirectoryFile where+ data GADTType TDirectoryFile a where + GADTTDirectoryFileTDirectoryFile :: TDirectoryFile -> GADTType TDirectoryFile TDirectoryFile+ GADTTDirectoryFileTFile :: TFile -> GADTType TDirectoryFile TFile+ GADTTDirectoryFileBottom :: GADTType TDirectoryFile BottomType+ data EGADTType TDirectoryFile = forall a. EGADTTDirectoryFile (GADTType TDirectoryFile a)++castTDirectoryFile :: Exist TDirectoryFile -> IO (EGADTType TDirectoryFile)+castTDirectoryFile eobj = do + let obj = TDirectoryFile (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TDirectoryFile" -> case obj of+ TDirectoryFile fptr -> let obj' = TDirectoryFile (castForeignPtr fptr :: ForeignPtr RawTDirectoryFile)+ in return . EGADTTDirectoryFile . GADTTDirectoryFileTDirectoryFile $ obj'+ "TFile" -> case obj of+ TDirectoryFile fptr -> let obj' = TFile (castForeignPtr fptr :: ForeignPtr RawTFile)+ in return . EGADTTDirectoryFile . GADTTDirectoryFileTFile $ obj'+ _ -> return . EGADTTDirectoryFile $ GADTTDirectoryFileBottom++++++instance GADTTypeable TDirectory where+ data GADTType TDirectory a where + GADTTDirectoryTDirectory :: TDirectory -> GADTType TDirectory TDirectory+ GADTTDirectoryTDirectoryFile :: TDirectoryFile -> GADTType TDirectory TDirectoryFile+ GADTTDirectoryTFile :: TFile -> GADTType TDirectory TFile+ GADTTDirectoryBottom :: GADTType TDirectory BottomType+ data EGADTType TDirectory = forall a. EGADTTDirectory (GADTType TDirectory a)++castTDirectory :: Exist TDirectory -> IO (EGADTType TDirectory)+castTDirectory eobj = do + let obj = TDirectory (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TDirectory" -> case obj of+ TDirectory fptr -> let obj' = TDirectory (castForeignPtr fptr :: ForeignPtr RawTDirectory)+ in return . EGADTTDirectory . GADTTDirectoryTDirectory $ obj'+ "TDirectoryFile" -> case obj of+ TDirectory fptr -> let obj' = TDirectoryFile (castForeignPtr fptr :: ForeignPtr RawTDirectoryFile)+ in return . EGADTTDirectory . GADTTDirectoryTDirectoryFile $ obj'+ "TFile" -> case obj of+ TDirectory fptr -> let obj' = TFile (castForeignPtr fptr :: ForeignPtr RawTFile)+ in return . EGADTTDirectory . GADTTDirectoryTFile $ obj'+ _ -> return . EGADTTDirectory $ GADTTDirectoryBottom++++++instance GADTTypeable TText where+ data GADTType TText a where + GADTTTextTLatex :: TLatex -> GADTType TText TLatex+ GADTTTextTText :: TText -> GADTType TText TText+ GADTTTextBottom :: GADTType TText BottomType+ data EGADTType TText = forall a. EGADTTText (GADTType TText a)++castTText :: Exist TText -> IO (EGADTType TText)+castTText eobj = do + let obj = TText (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TLatex" -> case obj of+ TText fptr -> let obj' = TLatex (castForeignPtr fptr :: ForeignPtr RawTLatex)+ in return . EGADTTText . GADTTTextTLatex $ obj'+ "TText" -> case obj of+ TText fptr -> let obj' = TText (castForeignPtr fptr :: ForeignPtr RawTText)+ in return . EGADTTText . GADTTTextTText $ obj'+ _ -> return . EGADTTText $ GADTTTextBottom++++++instance GADTTypeable TLatex where+ data GADTType TLatex a where + GADTTLatexTLatex :: TLatex -> GADTType TLatex TLatex+ GADTTLatexBottom :: GADTType TLatex BottomType+ data EGADTType TLatex = forall a. EGADTTLatex (GADTType TLatex a)++castTLatex :: Exist TLatex -> IO (EGADTType TLatex)+castTLatex eobj = do + let obj = TLatex (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TLatex" -> case obj of+ TLatex fptr -> let obj' = TLatex (castForeignPtr fptr :: ForeignPtr RawTLatex)+ in return . EGADTTLatex . GADTTLatexTLatex $ obj'+ _ -> return . EGADTTLatex $ GADTTLatexBottom++++++instance GADTTypeable TAxis where+ data GADTType TAxis a where + GADTTAxisTAxis :: TAxis -> GADTType TAxis TAxis+ GADTTAxisBottom :: GADTType TAxis BottomType+ data EGADTType TAxis = forall a. EGADTTAxis (GADTType TAxis a)++castTAxis :: Exist TAxis -> IO (EGADTType TAxis)+castTAxis eobj = do + let obj = TAxis (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TAxis" -> case obj of+ TAxis fptr -> let obj' = TAxis (castForeignPtr fptr :: ForeignPtr RawTAxis)+ in return . EGADTTAxis . GADTTAxisTAxis $ obj'+ _ -> return . EGADTTAxis $ GADTTAxisBottom++++++instance GADTTypeable TEfficiency where+ data GADTType TEfficiency a where + GADTTEfficiencyTEfficiency :: TEfficiency -> GADTType TEfficiency TEfficiency+ GADTTEfficiencyBottom :: GADTType TEfficiency BottomType+ data EGADTType TEfficiency = forall a. EGADTTEfficiency (GADTType TEfficiency a)++castTEfficiency :: Exist TEfficiency -> IO (EGADTType TEfficiency)+castTEfficiency eobj = do + let obj = TEfficiency (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TEfficiency" -> case obj of+ TEfficiency fptr -> let obj' = TEfficiency (castForeignPtr fptr :: ForeignPtr RawTEfficiency)+ in return . EGADTTEfficiency . GADTTEfficiencyTEfficiency $ obj'+ _ -> return . EGADTTEfficiency $ GADTTEfficiencyBottom++++++instance GADTTypeable TCurlyArc where+ data GADTType TCurlyArc a where + GADTTCurlyArcTCurlyArc :: TCurlyArc -> GADTType TCurlyArc TCurlyArc+ GADTTCurlyArcBottom :: GADTType TCurlyArc BottomType+ data EGADTType TCurlyArc = forall a. EGADTTCurlyArc (GADTType TCurlyArc a)++castTCurlyArc :: Exist TCurlyArc -> IO (EGADTType TCurlyArc)+castTCurlyArc eobj = do + let obj = TCurlyArc (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TCurlyArc" -> case obj of+ TCurlyArc fptr -> let obj' = TCurlyArc (castForeignPtr fptr :: ForeignPtr RawTCurlyArc)+ in return . EGADTTCurlyArc . GADTTCurlyArcTCurlyArc $ obj'+ _ -> return . EGADTTCurlyArc $ GADTTCurlyArcBottom++++++instance GADTTypeable TCurlyLine where+ data GADTType TCurlyLine a where + GADTTCurlyLineTCurlyLine :: TCurlyLine -> GADTType TCurlyLine TCurlyLine+ GADTTCurlyLineTCurlyArc :: TCurlyArc -> GADTType TCurlyLine TCurlyArc+ GADTTCurlyLineBottom :: GADTType TCurlyLine BottomType+ data EGADTType TCurlyLine = forall a. EGADTTCurlyLine (GADTType TCurlyLine a)++castTCurlyLine :: Exist TCurlyLine -> IO (EGADTType TCurlyLine)+castTCurlyLine eobj = do + let obj = TCurlyLine (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TCurlyLine" -> case obj of+ TCurlyLine fptr -> let obj' = TCurlyLine (castForeignPtr fptr :: ForeignPtr RawTCurlyLine)+ in return . EGADTTCurlyLine . GADTTCurlyLineTCurlyLine $ obj'+ "TCurlyArc" -> case obj of+ TCurlyLine fptr -> let obj' = TCurlyArc (castForeignPtr fptr :: ForeignPtr RawTCurlyArc)+ in return . EGADTTCurlyLine . GADTTCurlyLineTCurlyArc $ obj'+ _ -> return . EGADTTCurlyLine $ GADTTCurlyLineBottom++++++instance GADTTypeable TPolyLine where+ data GADTType TPolyLine a where + GADTTPolyLineTPolyLine :: TPolyLine -> GADTType TPolyLine TPolyLine+ GADTTPolyLineTCurlyLine :: TCurlyLine -> GADTType TPolyLine TCurlyLine+ GADTTPolyLineTCurlyArc :: TCurlyArc -> GADTType TPolyLine TCurlyArc+ GADTTPolyLineBottom :: GADTType TPolyLine BottomType+ data EGADTType TPolyLine = forall a. EGADTTPolyLine (GADTType TPolyLine a)++castTPolyLine :: Exist TPolyLine -> IO (EGADTType TPolyLine)+castTPolyLine eobj = do + let obj = TPolyLine (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPolyLine" -> case obj of+ TPolyLine fptr -> let obj' = TPolyLine (castForeignPtr fptr :: ForeignPtr RawTPolyLine)+ in return . EGADTTPolyLine . GADTTPolyLineTPolyLine $ obj'+ "TCurlyLine" -> case obj of+ TPolyLine fptr -> let obj' = TCurlyLine (castForeignPtr fptr :: ForeignPtr RawTCurlyLine)+ in return . EGADTTPolyLine . GADTTPolyLineTCurlyLine $ obj'+ "TCurlyArc" -> case obj of+ TPolyLine fptr -> let obj' = TCurlyArc (castForeignPtr fptr :: ForeignPtr RawTCurlyArc)+ in return . EGADTTPolyLine . GADTTPolyLineTCurlyArc $ obj'+ _ -> return . EGADTTPolyLine $ GADTTPolyLineBottom++++++instance GADTTypeable TTreeSQL where+ data GADTType TTreeSQL a where + GADTTTreeSQLTTreeSQL :: TTreeSQL -> GADTType TTreeSQL TTreeSQL+ GADTTTreeSQLBottom :: GADTType TTreeSQL BottomType+ data EGADTType TTreeSQL = forall a. EGADTTTreeSQL (GADTType TTreeSQL a)++castTTreeSQL :: Exist TTreeSQL -> IO (EGADTType TTreeSQL)+castTTreeSQL eobj = do + let obj = TTreeSQL (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TTreeSQL" -> case obj of+ TTreeSQL fptr -> let obj' = TTreeSQL (castForeignPtr fptr :: ForeignPtr RawTTreeSQL)+ in return . EGADTTTreeSQL . GADTTTreeSQLTTreeSQL $ obj'+ _ -> return . EGADTTTreeSQL $ GADTTTreeSQLBottom++++++instance GADTTypeable TNtupleD where+ data GADTType TNtupleD a where + GADTTNtupleDTNtupleD :: TNtupleD -> GADTType TNtupleD TNtupleD+ GADTTNtupleDBottom :: GADTType TNtupleD BottomType+ data EGADTType TNtupleD = forall a. EGADTTNtupleD (GADTType TNtupleD a)++castTNtupleD :: Exist TNtupleD -> IO (EGADTType TNtupleD)+castTNtupleD eobj = do + let obj = TNtupleD (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TNtupleD" -> case obj of+ TNtupleD fptr -> let obj' = TNtupleD (castForeignPtr fptr :: ForeignPtr RawTNtupleD)+ in return . EGADTTNtupleD . GADTTNtupleDTNtupleD $ obj'+ _ -> return . EGADTTNtupleD $ GADTTNtupleDBottom++++++instance GADTTypeable TNtuple where+ data GADTType TNtuple a where + GADTTNtupleTNtuple :: TNtuple -> GADTType TNtuple TNtuple+ GADTTNtupleBottom :: GADTType TNtuple BottomType+ data EGADTType TNtuple = forall a. EGADTTNtuple (GADTType TNtuple a)++castTNtuple :: Exist TNtuple -> IO (EGADTType TNtuple)+castTNtuple eobj = do + let obj = TNtuple (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TNtuple" -> case obj of+ TNtuple fptr -> let obj' = TNtuple (castForeignPtr fptr :: ForeignPtr RawTNtuple)+ in return . EGADTTNtuple . GADTTNtupleTNtuple $ obj'+ _ -> return . EGADTTNtuple $ GADTTNtupleBottom++++++instance GADTTypeable TChain where+ data GADTType TChain a where + GADTTChainTChain :: TChain -> GADTType TChain TChain+ GADTTChainBottom :: GADTType TChain BottomType+ data EGADTType TChain = forall a. EGADTTChain (GADTType TChain a)++castTChain :: Exist TChain -> IO (EGADTType TChain)+castTChain eobj = do + let obj = TChain (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TChain" -> case obj of+ TChain fptr -> let obj' = TChain (castForeignPtr fptr :: ForeignPtr RawTChain)+ in return . EGADTTChain . GADTTChainTChain $ obj'+ _ -> return . EGADTTChain $ GADTTChainBottom++++++instance GADTTypeable TTree where+ data GADTType TTree a where + GADTTTreeTTree :: TTree -> GADTType TTree TTree+ GADTTTreeTChain :: TChain -> GADTType TTree TChain+ GADTTTreeTNtuple :: TNtuple -> GADTType TTree TNtuple+ GADTTTreeTNtupleD :: TNtupleD -> GADTType TTree TNtupleD+ GADTTTreeTTreeSQL :: TTreeSQL -> GADTType TTree TTreeSQL+ GADTTTreeBottom :: GADTType TTree BottomType+ data EGADTType TTree = forall a. EGADTTTree (GADTType TTree a)++castTTree :: Exist TTree -> IO (EGADTType TTree)+castTTree eobj = do + let obj = TTree (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TTree" -> case obj of+ TTree fptr -> let obj' = TTree (castForeignPtr fptr :: ForeignPtr RawTTree)+ in return . EGADTTTree . GADTTTreeTTree $ obj'+ "TChain" -> case obj of+ TTree fptr -> let obj' = TChain (castForeignPtr fptr :: ForeignPtr RawTChain)+ in return . EGADTTTree . GADTTTreeTChain $ obj'+ "TNtuple" -> case obj of+ TTree fptr -> let obj' = TNtuple (castForeignPtr fptr :: ForeignPtr RawTNtuple)+ in return . EGADTTTree . GADTTTreeTNtuple $ obj'+ "TNtupleD" -> case obj of+ TTree fptr -> let obj' = TNtupleD (castForeignPtr fptr :: ForeignPtr RawTNtupleD)+ in return . EGADTTTree . GADTTTreeTNtupleD $ obj'+ "TTreeSQL" -> case obj of+ TTree fptr -> let obj' = TTreeSQL (castForeignPtr fptr :: ForeignPtr RawTTreeSQL)+ in return . EGADTTTree . GADTTTreeTTreeSQL $ obj'+ _ -> return . EGADTTTree $ GADTTTreeBottom++++++instance GADTTypeable TSliderBox where+ data GADTType TSliderBox a where + GADTTSliderBoxTSliderBox :: TSliderBox -> GADTType TSliderBox TSliderBox+ GADTTSliderBoxBottom :: GADTType TSliderBox BottomType+ data EGADTType TSliderBox = forall a. EGADTTSliderBox (GADTType TSliderBox a)++castTSliderBox :: Exist TSliderBox -> IO (EGADTType TSliderBox)+castTSliderBox eobj = do + let obj = TSliderBox (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TSliderBox" -> case obj of+ TSliderBox fptr -> let obj' = TSliderBox (castForeignPtr fptr :: ForeignPtr RawTSliderBox)+ in return . EGADTTSliderBox . GADTTSliderBoxTSliderBox $ obj'+ _ -> return . EGADTTSliderBox $ GADTTSliderBoxBottom++++++instance GADTTypeable TFrame where+ data GADTType TFrame a where + GADTTFrameTFrame :: TFrame -> GADTType TFrame TFrame+ GADTTFrameBottom :: GADTType TFrame BottomType+ data EGADTType TFrame = forall a. EGADTTFrame (GADTType TFrame a)++castTFrame :: Exist TFrame -> IO (EGADTType TFrame)+castTFrame eobj = do + let obj = TFrame (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TFrame" -> case obj of+ TFrame fptr -> let obj' = TFrame (castForeignPtr fptr :: ForeignPtr RawTFrame)+ in return . EGADTTFrame . GADTTFrameTFrame $ obj'+ _ -> return . EGADTTFrame $ GADTTFrameBottom++++++instance GADTTypeable TWbox where+ data GADTType TWbox a where + GADTTWboxTWbox :: TWbox -> GADTType TWbox TWbox+ GADTTWboxTFrame :: TFrame -> GADTType TWbox TFrame+ GADTTWboxTSliderBox :: TSliderBox -> GADTType TWbox TSliderBox+ GADTTWboxBottom :: GADTType TWbox BottomType+ data EGADTType TWbox = forall a. EGADTTWbox (GADTType TWbox a)++castTWbox :: Exist TWbox -> IO (EGADTType TWbox)+castTWbox eobj = do + let obj = TWbox (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TWbox" -> case obj of+ TWbox fptr -> let obj' = TWbox (castForeignPtr fptr :: ForeignPtr RawTWbox)+ in return . EGADTTWbox . GADTTWboxTWbox $ obj'+ "TFrame" -> case obj of+ TWbox fptr -> let obj' = TFrame (castForeignPtr fptr :: ForeignPtr RawTFrame)+ in return . EGADTTWbox . GADTTWboxTFrame $ obj'+ "TSliderBox" -> case obj of+ TWbox fptr -> let obj' = TSliderBox (castForeignPtr fptr :: ForeignPtr RawTSliderBox)+ in return . EGADTTWbox . GADTTWboxTSliderBox $ obj'+ _ -> return . EGADTTWbox $ GADTTWboxBottom++++++instance GADTTypeable TPaveClass where+ data GADTType TPaveClass a where + GADTTPaveClassTPaveClass :: TPaveClass -> GADTType TPaveClass TPaveClass+ GADTTPaveClassBottom :: GADTType TPaveClass BottomType+ data EGADTType TPaveClass = forall a. EGADTTPaveClass (GADTType TPaveClass a)++castTPaveClass :: Exist TPaveClass -> IO (EGADTType TPaveClass)+castTPaveClass eobj = do + let obj = TPaveClass (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPaveClass" -> case obj of+ TPaveClass fptr -> let obj' = TPaveClass (castForeignPtr fptr :: ForeignPtr RawTPaveClass)+ in return . EGADTTPaveClass . GADTTPaveClassTPaveClass $ obj'+ _ -> return . EGADTTPaveClass $ GADTTPaveClassBottom++++++instance GADTTypeable TPaveLabel where+ data GADTType TPaveLabel a where + GADTTPaveLabelTPaveLabel :: TPaveLabel -> GADTType TPaveLabel TPaveLabel+ GADTTPaveLabelTPaveClass :: TPaveClass -> GADTType TPaveLabel TPaveClass+ GADTTPaveLabelBottom :: GADTType TPaveLabel BottomType+ data EGADTType TPaveLabel = forall a. EGADTTPaveLabel (GADTType TPaveLabel a)++castTPaveLabel :: Exist TPaveLabel -> IO (EGADTType TPaveLabel)+castTPaveLabel eobj = do + let obj = TPaveLabel (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPaveLabel" -> case obj of+ TPaveLabel fptr -> let obj' = TPaveLabel (castForeignPtr fptr :: ForeignPtr RawTPaveLabel)+ in return . EGADTTPaveLabel . GADTTPaveLabelTPaveLabel $ obj'+ "TPaveClass" -> case obj of+ TPaveLabel fptr -> let obj' = TPaveClass (castForeignPtr fptr :: ForeignPtr RawTPaveClass)+ in return . EGADTTPaveLabel . GADTTPaveLabelTPaveClass $ obj'+ _ -> return . EGADTTPaveLabel $ GADTTPaveLabelBottom++++++instance GADTTypeable TLegend where+ data GADTType TLegend a where + GADTTLegendTLegend :: TLegend -> GADTType TLegend TLegend+ GADTTLegendBottom :: GADTType TLegend BottomType+ data EGADTType TLegend = forall a. EGADTTLegend (GADTType TLegend a)++castTLegend :: Exist TLegend -> IO (EGADTType TLegend)+castTLegend eobj = do + let obj = TLegend (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TLegend" -> case obj of+ TLegend fptr -> let obj' = TLegend (castForeignPtr fptr :: ForeignPtr RawTLegend)+ in return . EGADTTLegend . GADTTLegendTLegend $ obj'+ _ -> return . EGADTTLegend $ GADTTLegendBottom++++++instance GADTTypeable TPavesText where+ data GADTType TPavesText a where + GADTTPavesTextTPavesText :: TPavesText -> GADTType TPavesText TPavesText+ GADTTPavesTextBottom :: GADTType TPavesText BottomType+ data EGADTType TPavesText = forall a. EGADTTPavesText (GADTType TPavesText a)++castTPavesText :: Exist TPavesText -> IO (EGADTType TPavesText)+castTPavesText eobj = do + let obj = TPavesText (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPavesText" -> case obj of+ TPavesText fptr -> let obj' = TPavesText (castForeignPtr fptr :: ForeignPtr RawTPavesText)+ in return . EGADTTPavesText . GADTTPavesTextTPavesText $ obj'+ _ -> return . EGADTTPavesText $ GADTTPavesTextBottom++++++instance GADTTypeable TPaveStats where+ data GADTType TPaveStats a where + GADTTPaveStatsTPaveStats :: TPaveStats -> GADTType TPaveStats TPaveStats+ GADTTPaveStatsBottom :: GADTType TPaveStats BottomType+ data EGADTType TPaveStats = forall a. EGADTTPaveStats (GADTType TPaveStats a)++castTPaveStats :: Exist TPaveStats -> IO (EGADTType TPaveStats)+castTPaveStats eobj = do + let obj = TPaveStats (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPaveStats" -> case obj of+ TPaveStats fptr -> let obj' = TPaveStats (castForeignPtr fptr :: ForeignPtr RawTPaveStats)+ in return . EGADTTPaveStats . GADTTPaveStatsTPaveStats $ obj'+ _ -> return . EGADTTPaveStats $ GADTTPaveStatsBottom++++++instance GADTTypeable TDiamond where+ data GADTType TDiamond a where + GADTTDiamondTDiamond :: TDiamond -> GADTType TDiamond TDiamond+ GADTTDiamondBottom :: GADTType TDiamond BottomType+ data EGADTType TDiamond = forall a. EGADTTDiamond (GADTType TDiamond a)++castTDiamond :: Exist TDiamond -> IO (EGADTType TDiamond)+castTDiamond eobj = do + let obj = TDiamond (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TDiamond" -> case obj of+ TDiamond fptr -> let obj' = TDiamond (castForeignPtr fptr :: ForeignPtr RawTDiamond)+ in return . EGADTTDiamond . GADTTDiamondTDiamond $ obj'+ _ -> return . EGADTTDiamond $ GADTTDiamondBottom++++++instance GADTTypeable TPaveText where+ data GADTType TPaveText a where + GADTTPaveTextTPaveText :: TPaveText -> GADTType TPaveText TPaveText+ GADTTPaveTextTDiamond :: TDiamond -> GADTType TPaveText TDiamond+ GADTTPaveTextTPaveStats :: TPaveStats -> GADTType TPaveText TPaveStats+ GADTTPaveTextTPavesText :: TPavesText -> GADTType TPaveText TPavesText+ GADTTPaveTextBottom :: GADTType TPaveText BottomType+ data EGADTType TPaveText = forall a. EGADTTPaveText (GADTType TPaveText a)++castTPaveText :: Exist TPaveText -> IO (EGADTType TPaveText)+castTPaveText eobj = do + let obj = TPaveText (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPaveText" -> case obj of+ TPaveText fptr -> let obj' = TPaveText (castForeignPtr fptr :: ForeignPtr RawTPaveText)+ in return . EGADTTPaveText . GADTTPaveTextTPaveText $ obj'+ "TDiamond" -> case obj of+ TPaveText fptr -> let obj' = TDiamond (castForeignPtr fptr :: ForeignPtr RawTDiamond)+ in return . EGADTTPaveText . GADTTPaveTextTDiamond $ obj'+ "TPaveStats" -> case obj of+ TPaveText fptr -> let obj' = TPaveStats (castForeignPtr fptr :: ForeignPtr RawTPaveStats)+ in return . EGADTTPaveText . GADTTPaveTextTPaveStats $ obj'+ "TPavesText" -> case obj of+ TPaveText fptr -> let obj' = TPavesText (castForeignPtr fptr :: ForeignPtr RawTPavesText)+ in return . EGADTTPaveText . GADTTPaveTextTPavesText $ obj'+ _ -> return . EGADTTPaveText $ GADTTPaveTextBottom++++++instance GADTTypeable TPave where+ data GADTType TPave a where + GADTTPaveTPave :: TPave -> GADTType TPave TPave+ GADTTPaveTPaveText :: TPaveText -> GADTType TPave TPaveText+ GADTTPaveTDiamond :: TDiamond -> GADTType TPave TDiamond+ GADTTPaveTPaveStats :: TPaveStats -> GADTType TPave TPaveStats+ GADTTPaveTPavesText :: TPavesText -> GADTType TPave TPavesText+ GADTTPaveTLegend :: TLegend -> GADTType TPave TLegend+ GADTTPaveTPaveLabel :: TPaveLabel -> GADTType TPave TPaveLabel+ GADTTPaveTPaveClass :: TPaveClass -> GADTType TPave TPaveClass+ GADTTPaveBottom :: GADTType TPave BottomType+ data EGADTType TPave = forall a. EGADTTPave (GADTType TPave a)++castTPave :: Exist TPave -> IO (EGADTType TPave)+castTPave eobj = do + let obj = TPave (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPave" -> case obj of+ TPave fptr -> let obj' = TPave (castForeignPtr fptr :: ForeignPtr RawTPave)+ in return . EGADTTPave . GADTTPaveTPave $ obj'+ "TPaveText" -> case obj of+ TPave fptr -> let obj' = TPaveText (castForeignPtr fptr :: ForeignPtr RawTPaveText)+ in return . EGADTTPave . GADTTPaveTPaveText $ obj'+ "TDiamond" -> case obj of+ TPave fptr -> let obj' = TDiamond (castForeignPtr fptr :: ForeignPtr RawTDiamond)+ in return . EGADTTPave . GADTTPaveTDiamond $ obj'+ "TPaveStats" -> case obj of+ TPave fptr -> let obj' = TPaveStats (castForeignPtr fptr :: ForeignPtr RawTPaveStats)+ in return . EGADTTPave . GADTTPaveTPaveStats $ obj'+ "TPavesText" -> case obj of+ TPave fptr -> let obj' = TPavesText (castForeignPtr fptr :: ForeignPtr RawTPavesText)+ in return . EGADTTPave . GADTTPaveTPavesText $ obj'+ "TLegend" -> case obj of+ TPave fptr -> let obj' = TLegend (castForeignPtr fptr :: ForeignPtr RawTLegend)+ in return . EGADTTPave . GADTTPaveTLegend $ obj'+ "TPaveLabel" -> case obj of+ TPave fptr -> let obj' = TPaveLabel (castForeignPtr fptr :: ForeignPtr RawTPaveLabel)+ in return . EGADTTPave . GADTTPaveTPaveLabel $ obj'+ "TPaveClass" -> case obj of+ TPave fptr -> let obj' = TPaveClass (castForeignPtr fptr :: ForeignPtr RawTPaveClass)+ in return . EGADTTPave . GADTTPaveTPaveClass $ obj'+ _ -> return . EGADTTPave $ GADTTPaveBottom++++++instance GADTTypeable TBox where+ data GADTType TBox a where + GADTTBoxTBox :: TBox -> GADTType TBox TBox+ GADTTBoxTPave :: TPave -> GADTType TBox TPave+ GADTTBoxTPaveText :: TPaveText -> GADTType TBox TPaveText+ GADTTBoxTDiamond :: TDiamond -> GADTType TBox TDiamond+ GADTTBoxTPaveStats :: TPaveStats -> GADTType TBox TPaveStats+ GADTTBoxTPavesText :: TPavesText -> GADTType TBox TPavesText+ GADTTBoxTLegend :: TLegend -> GADTType TBox TLegend+ GADTTBoxTPaveLabel :: TPaveLabel -> GADTType TBox TPaveLabel+ GADTTBoxTPaveClass :: TPaveClass -> GADTType TBox TPaveClass+ GADTTBoxTWbox :: TWbox -> GADTType TBox TWbox+ GADTTBoxTFrame :: TFrame -> GADTType TBox TFrame+ GADTTBoxTSliderBox :: TSliderBox -> GADTType TBox TSliderBox+ GADTTBoxBottom :: GADTType TBox BottomType+ data EGADTType TBox = forall a. EGADTTBox (GADTType TBox a)++castTBox :: Exist TBox -> IO (EGADTType TBox)+castTBox eobj = do + let obj = TBox (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TBox" -> case obj of+ TBox fptr -> let obj' = TBox (castForeignPtr fptr :: ForeignPtr RawTBox)+ in return . EGADTTBox . GADTTBoxTBox $ obj'+ "TPave" -> case obj of+ TBox fptr -> let obj' = TPave (castForeignPtr fptr :: ForeignPtr RawTPave)+ in return . EGADTTBox . GADTTBoxTPave $ obj'+ "TPaveText" -> case obj of+ TBox fptr -> let obj' = TPaveText (castForeignPtr fptr :: ForeignPtr RawTPaveText)+ in return . EGADTTBox . GADTTBoxTPaveText $ obj'+ "TDiamond" -> case obj of+ TBox fptr -> let obj' = TDiamond (castForeignPtr fptr :: ForeignPtr RawTDiamond)+ in return . EGADTTBox . GADTTBoxTDiamond $ obj'+ "TPaveStats" -> case obj of+ TBox fptr -> let obj' = TPaveStats (castForeignPtr fptr :: ForeignPtr RawTPaveStats)+ in return . EGADTTBox . GADTTBoxTPaveStats $ obj'+ "TPavesText" -> case obj of+ TBox fptr -> let obj' = TPavesText (castForeignPtr fptr :: ForeignPtr RawTPavesText)+ in return . EGADTTBox . GADTTBoxTPavesText $ obj'+ "TLegend" -> case obj of+ TBox fptr -> let obj' = TLegend (castForeignPtr fptr :: ForeignPtr RawTLegend)+ in return . EGADTTBox . GADTTBoxTLegend $ obj'+ "TPaveLabel" -> case obj of+ TBox fptr -> let obj' = TPaveLabel (castForeignPtr fptr :: ForeignPtr RawTPaveLabel)+ in return . EGADTTBox . GADTTBoxTPaveLabel $ obj'+ "TPaveClass" -> case obj of+ TBox fptr -> let obj' = TPaveClass (castForeignPtr fptr :: ForeignPtr RawTPaveClass)+ in return . EGADTTBox . GADTTBoxTPaveClass $ obj'+ "TWbox" -> case obj of+ TBox fptr -> let obj' = TWbox (castForeignPtr fptr :: ForeignPtr RawTWbox)+ in return . EGADTTBox . GADTTBoxTWbox $ obj'+ "TFrame" -> case obj of+ TBox fptr -> let obj' = TFrame (castForeignPtr fptr :: ForeignPtr RawTFrame)+ in return . EGADTTBox . GADTTBoxTFrame $ obj'+ "TSliderBox" -> case obj of+ TBox fptr -> let obj' = TSliderBox (castForeignPtr fptr :: ForeignPtr RawTSliderBox)+ in return . EGADTTBox . GADTTBoxTSliderBox $ obj'+ _ -> return . EGADTTBox $ GADTTBoxBottom++++++instance GADTTypeable TXTRU where+ data GADTType TXTRU a where + GADTTXTRUTXTRU :: TXTRU -> GADTType TXTRU TXTRU+ GADTTXTRUBottom :: GADTType TXTRU BottomType+ data EGADTType TXTRU = forall a. EGADTTXTRU (GADTType TXTRU a)++castTXTRU :: Exist TXTRU -> IO (EGADTType TXTRU)+castTXTRU eobj = do + let obj = TXTRU (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TXTRU" -> case obj of+ TXTRU fptr -> let obj' = TXTRU (castForeignPtr fptr :: ForeignPtr RawTXTRU)+ in return . EGADTTXTRU . GADTTXTRUTXTRU $ obj'+ _ -> return . EGADTTXTRU $ GADTTXTRUBottom++++++instance GADTTypeable TSPHE where+ data GADTType TSPHE a where + GADTTSPHETSPHE :: TSPHE -> GADTType TSPHE TSPHE+ GADTTSPHEBottom :: GADTType TSPHE BottomType+ data EGADTType TSPHE = forall a. EGADTTSPHE (GADTType TSPHE a)++castTSPHE :: Exist TSPHE -> IO (EGADTType TSPHE)+castTSPHE eobj = do + let obj = TSPHE (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TSPHE" -> case obj of+ TSPHE fptr -> let obj' = TSPHE (castForeignPtr fptr :: ForeignPtr RawTSPHE)+ in return . EGADTTSPHE . GADTTSPHETSPHE $ obj'+ _ -> return . EGADTTSPHE $ GADTTSPHEBottom++++++instance GADTTypeable TPCON where+ data GADTType TPCON a where + GADTTPCONTPCON :: TPCON -> GADTType TPCON TPCON+ GADTTPCONBottom :: GADTType TPCON BottomType+ data EGADTType TPCON = forall a. EGADTTPCON (GADTType TPCON a)++castTPCON :: Exist TPCON -> IO (EGADTType TPCON)+castTPCON eobj = do + let obj = TPCON (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TPCON" -> case obj of+ TPCON fptr -> let obj' = TPCON (castForeignPtr fptr :: ForeignPtr RawTPCON)+ in return . EGADTTPCON . GADTTPCONTPCON $ obj'+ _ -> return . EGADTTPCON $ GADTTPCONBottom++++++instance GADTTypeable TTUBE where+ data GADTType TTUBE a where + GADTTTUBETTUBE :: TTUBE -> GADTType TTUBE TTUBE+ GADTTTUBEBottom :: GADTType TTUBE BottomType+ data EGADTType TTUBE = forall a. EGADTTTUBE (GADTType TTUBE a)++castTTUBE :: Exist TTUBE -> IO (EGADTType TTUBE)+castTTUBE eobj = do + let obj = TTUBE (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TTUBE" -> case obj of+ TTUBE fptr -> let obj' = TTUBE (castForeignPtr fptr :: ForeignPtr RawTTUBE)+ in return . EGADTTTUBE . GADTTTUBETTUBE $ obj'+ _ -> return . EGADTTTUBE $ GADTTTUBEBottom++++++instance GADTTypeable TBRIK where+ data GADTType TBRIK a where + GADTTBRIKTBRIK :: TBRIK -> GADTType TBRIK TBRIK+ GADTTBRIKBottom :: GADTType TBRIK BottomType+ data EGADTType TBRIK = forall a. EGADTTBRIK (GADTType TBRIK a)++castTBRIK :: Exist TBRIK -> IO (EGADTType TBRIK)+castTBRIK eobj = do + let obj = TBRIK (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TBRIK" -> case obj of+ TBRIK fptr -> let obj' = TBRIK (castForeignPtr fptr :: ForeignPtr RawTBRIK)+ in return . EGADTTBRIK . GADTTBRIKTBRIK $ obj'+ _ -> return . EGADTTBRIK $ GADTTBRIKBottom++++++instance GADTTypeable TShape where+ data GADTType TShape a where + GADTTShapeTShape :: TShape -> GADTType TShape TShape+ GADTTShapeTBRIK :: TBRIK -> GADTType TShape TBRIK+ GADTTShapeTTUBE :: TTUBE -> GADTType TShape TTUBE+ GADTTShapeTPCON :: TPCON -> GADTType TShape TPCON+ GADTTShapeTSPHE :: TSPHE -> GADTType TShape TSPHE+ GADTTShapeTXTRU :: TXTRU -> GADTType TShape TXTRU+ GADTTShapeBottom :: GADTType TShape BottomType+ data EGADTType TShape = forall a. EGADTTShape (GADTType TShape a)++castTShape :: Exist TShape -> IO (EGADTType TShape)+castTShape eobj = do + let obj = TShape (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TShape" -> case obj of+ TShape fptr -> let obj' = TShape (castForeignPtr fptr :: ForeignPtr RawTShape)+ in return . EGADTTShape . GADTTShapeTShape $ obj'+ "TBRIK" -> case obj of+ TShape fptr -> let obj' = TBRIK (castForeignPtr fptr :: ForeignPtr RawTBRIK)+ in return . EGADTTShape . GADTTShapeTBRIK $ obj'+ "TTUBE" -> case obj of+ TShape fptr -> let obj' = TTUBE (castForeignPtr fptr :: ForeignPtr RawTTUBE)+ in return . EGADTTShape . GADTTShapeTTUBE $ obj'+ "TPCON" -> case obj of+ TShape fptr -> let obj' = TPCON (castForeignPtr fptr :: ForeignPtr RawTPCON)+ in return . EGADTTShape . GADTTShapeTPCON $ obj'+ "TSPHE" -> case obj of+ TShape fptr -> let obj' = TSPHE (castForeignPtr fptr :: ForeignPtr RawTSPHE)+ in return . EGADTTShape . GADTTShapeTSPHE $ obj'+ "TXTRU" -> case obj of+ TShape fptr -> let obj' = TXTRU (castForeignPtr fptr :: ForeignPtr RawTXTRU)+ in return . EGADTTShape . GADTTShapeTXTRU $ obj'+ _ -> return . EGADTTShape $ GADTTShapeBottom++++++instance GADTTypeable TGaxis where+ data GADTType TGaxis a where + GADTTGaxisTGaxis :: TGaxis -> GADTType TGaxis TGaxis+ GADTTGaxisBottom :: GADTType TGaxis BottomType+ data EGADTType TGaxis = forall a. EGADTTGaxis (GADTType TGaxis a)++castTGaxis :: Exist TGaxis -> IO (EGADTType TGaxis)+castTGaxis eobj = do + let obj = TGaxis (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGaxis" -> case obj of+ TGaxis fptr -> let obj' = TGaxis (castForeignPtr fptr :: ForeignPtr RawTGaxis)+ in return . EGADTTGaxis . GADTTGaxisTGaxis $ obj'+ _ -> return . EGADTTGaxis $ GADTTGaxisBottom++++++instance GADTTypeable TArrow where+ data GADTType TArrow a where + GADTTArrowTArrow :: TArrow -> GADTType TArrow TArrow+ GADTTArrowBottom :: GADTType TArrow BottomType+ data EGADTType TArrow = forall a. EGADTTArrow (GADTType TArrow a)++castTArrow :: Exist TArrow -> IO (EGADTType TArrow)+castTArrow eobj = do + let obj = TArrow (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TArrow" -> case obj of+ TArrow fptr -> let obj' = TArrow (castForeignPtr fptr :: ForeignPtr RawTArrow)+ in return . EGADTTArrow . GADTTArrowTArrow $ obj'+ _ -> return . EGADTTArrow $ GADTTArrowBottom++++++instance GADTTypeable TLine where+ data GADTType TLine a where + GADTTLineTLine :: TLine -> GADTType TLine TLine+ GADTTLineTArrow :: TArrow -> GADTType TLine TArrow+ GADTTLineTGaxis :: TGaxis -> GADTType TLine TGaxis+ GADTTLineBottom :: GADTType TLine BottomType+ data EGADTType TLine = forall a. EGADTTLine (GADTType TLine a)++castTLine :: Exist TLine -> IO (EGADTType TLine)+castTLine eobj = do + let obj = TLine (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TLine" -> case obj of+ TLine fptr -> let obj' = TLine (castForeignPtr fptr :: ForeignPtr RawTLine)+ in return . EGADTTLine . GADTTLineTLine $ obj'+ "TArrow" -> case obj of+ TLine fptr -> let obj' = TArrow (castForeignPtr fptr :: ForeignPtr RawTArrow)+ in return . EGADTTLine . GADTTLineTArrow $ obj'+ "TGaxis" -> case obj of+ TLine fptr -> let obj' = TGaxis (castForeignPtr fptr :: ForeignPtr RawTGaxis)+ in return . EGADTTLine . GADTTLineTGaxis $ obj'+ _ -> return . EGADTTLine $ GADTTLineBottom++++++instance GADTTypeable TCrown where+ data GADTType TCrown a where + GADTTCrownTCrown :: TCrown -> GADTType TCrown TCrown+ GADTTCrownBottom :: GADTType TCrown BottomType+ data EGADTType TCrown = forall a. EGADTTCrown (GADTType TCrown a)++castTCrown :: Exist TCrown -> IO (EGADTType TCrown)+castTCrown eobj = do + let obj = TCrown (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TCrown" -> case obj of+ TCrown fptr -> let obj' = TCrown (castForeignPtr fptr :: ForeignPtr RawTCrown)+ in return . EGADTTCrown . GADTTCrownTCrown $ obj'+ _ -> return . EGADTTCrown $ GADTTCrownBottom++++++instance GADTTypeable TArc where+ data GADTType TArc a where + GADTTArcTArc :: TArc -> GADTType TArc TArc+ GADTTArcBottom :: GADTType TArc BottomType+ data EGADTType TArc = forall a. EGADTTArc (GADTType TArc a)++castTArc :: Exist TArc -> IO (EGADTType TArc)+castTArc eobj = do + let obj = TArc (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TArc" -> case obj of+ TArc fptr -> let obj' = TArc (castForeignPtr fptr :: ForeignPtr RawTArc)+ in return . EGADTTArc . GADTTArcTArc $ obj'+ _ -> return . EGADTTArc $ GADTTArcBottom++++++instance GADTTypeable TEllipse where+ data GADTType TEllipse a where + GADTTEllipseTEllipse :: TEllipse -> GADTType TEllipse TEllipse+ GADTTEllipseTArc :: TArc -> GADTType TEllipse TArc+ GADTTEllipseTCrown :: TCrown -> GADTType TEllipse TCrown+ GADTTEllipseBottom :: GADTType TEllipse BottomType+ data EGADTType TEllipse = forall a. EGADTTEllipse (GADTType TEllipse a)++castTEllipse :: Exist TEllipse -> IO (EGADTType TEllipse)+castTEllipse eobj = do + let obj = TEllipse (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TEllipse" -> case obj of+ TEllipse fptr -> let obj' = TEllipse (castForeignPtr fptr :: ForeignPtr RawTEllipse)+ in return . EGADTTEllipse . GADTTEllipseTEllipse $ obj'+ "TArc" -> case obj of+ TEllipse fptr -> let obj' = TArc (castForeignPtr fptr :: ForeignPtr RawTArc)+ in return . EGADTTEllipse . GADTTEllipseTArc $ obj'+ "TCrown" -> case obj of+ TEllipse fptr -> let obj' = TCrown (castForeignPtr fptr :: ForeignPtr RawTCrown)+ in return . EGADTTEllipse . GADTTEllipseTCrown $ obj'+ _ -> return . EGADTTEllipse $ GADTTEllipseBottom++++++instance GADTTypeable TGraphQQ where+ data GADTType TGraphQQ a where + GADTTGraphQQTGraphQQ :: TGraphQQ -> GADTType TGraphQQ TGraphQQ+ GADTTGraphQQBottom :: GADTType TGraphQQ BottomType+ data EGADTType TGraphQQ = forall a. EGADTTGraphQQ (GADTType TGraphQQ a)++castTGraphQQ :: Exist TGraphQQ -> IO (EGADTType TGraphQQ)+castTGraphQQ eobj = do + let obj = TGraphQQ (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGraphQQ" -> case obj of+ TGraphQQ fptr -> let obj' = TGraphQQ (castForeignPtr fptr :: ForeignPtr RawTGraphQQ)+ in return . EGADTTGraphQQ . GADTTGraphQQTGraphQQ $ obj'+ _ -> return . EGADTTGraphQQ $ GADTTGraphQQBottom++++++instance GADTTypeable TGraphPolar where+ data GADTType TGraphPolar a where + GADTTGraphPolarTGraphPolar :: TGraphPolar -> GADTType TGraphPolar TGraphPolar+ GADTTGraphPolarBottom :: GADTType TGraphPolar BottomType+ data EGADTType TGraphPolar = forall a. EGADTTGraphPolar (GADTType TGraphPolar a)++castTGraphPolar :: Exist TGraphPolar -> IO (EGADTType TGraphPolar)+castTGraphPolar eobj = do + let obj = TGraphPolar (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGraphPolar" -> case obj of+ TGraphPolar fptr -> let obj' = TGraphPolar (castForeignPtr fptr :: ForeignPtr RawTGraphPolar)+ in return . EGADTTGraphPolar . GADTTGraphPolarTGraphPolar $ obj'+ _ -> return . EGADTTGraphPolar $ GADTTGraphPolarBottom++++++instance GADTTypeable TGraphErrors where+ data GADTType TGraphErrors a where + GADTTGraphErrorsTGraphErrors :: TGraphErrors -> GADTType TGraphErrors TGraphErrors+ GADTTGraphErrorsTGraphPolar :: TGraphPolar -> GADTType TGraphErrors TGraphPolar+ GADTTGraphErrorsBottom :: GADTType TGraphErrors BottomType+ data EGADTType TGraphErrors = forall a. EGADTTGraphErrors (GADTType TGraphErrors a)++castTGraphErrors :: Exist TGraphErrors -> IO (EGADTType TGraphErrors)+castTGraphErrors eobj = do + let obj = TGraphErrors (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGraphErrors" -> case obj of+ TGraphErrors fptr -> let obj' = TGraphErrors (castForeignPtr fptr :: ForeignPtr RawTGraphErrors)+ in return . EGADTTGraphErrors . GADTTGraphErrorsTGraphErrors $ obj'+ "TGraphPolar" -> case obj of+ TGraphErrors fptr -> let obj' = TGraphPolar (castForeignPtr fptr :: ForeignPtr RawTGraphPolar)+ in return . EGADTTGraphErrors . GADTTGraphErrorsTGraphPolar $ obj'+ _ -> return . EGADTTGraphErrors $ GADTTGraphErrorsBottom++++++instance GADTTypeable TGraphBentErrors where+ data GADTType TGraphBentErrors a where + GADTTGraphBentErrorsTGraphBentErrors :: TGraphBentErrors -> GADTType TGraphBentErrors TGraphBentErrors+ GADTTGraphBentErrorsBottom :: GADTType TGraphBentErrors BottomType+ data EGADTType TGraphBentErrors = forall a. EGADTTGraphBentErrors (GADTType TGraphBentErrors a)++castTGraphBentErrors :: Exist TGraphBentErrors -> IO (EGADTType TGraphBentErrors)+castTGraphBentErrors eobj = do + let obj = TGraphBentErrors (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGraphBentErrors" -> case obj of+ TGraphBentErrors fptr -> let obj' = TGraphBentErrors (castForeignPtr fptr :: ForeignPtr RawTGraphBentErrors)+ in return . EGADTTGraphBentErrors . GADTTGraphBentErrorsTGraphBentErrors $ obj'+ _ -> return . EGADTTGraphBentErrors $ GADTTGraphBentErrorsBottom++++++instance GADTTypeable TCutG where+ data GADTType TCutG a where + GADTTCutGTCutG :: TCutG -> GADTType TCutG TCutG+ GADTTCutGBottom :: GADTType TCutG BottomType+ data EGADTType TCutG = forall a. EGADTTCutG (GADTType TCutG a)++castTCutG :: Exist TCutG -> IO (EGADTType TCutG)+castTCutG eobj = do + let obj = TCutG (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TCutG" -> case obj of+ TCutG fptr -> let obj' = TCutG (castForeignPtr fptr :: ForeignPtr RawTCutG)+ in return . EGADTTCutG . GADTTCutGTCutG $ obj'+ _ -> return . EGADTTCutG $ GADTTCutGBottom++++++instance GADTTypeable TGraphAsymmErrors where+ data GADTType TGraphAsymmErrors a where + GADTTGraphAsymmErrorsTGraphAsymmErrors :: TGraphAsymmErrors -> GADTType TGraphAsymmErrors TGraphAsymmErrors+ GADTTGraphAsymmErrorsBottom :: GADTType TGraphAsymmErrors BottomType+ data EGADTType TGraphAsymmErrors = forall a. EGADTTGraphAsymmErrors (GADTType TGraphAsymmErrors a)++castTGraphAsymmErrors :: Exist TGraphAsymmErrors -> IO (EGADTType TGraphAsymmErrors)+castTGraphAsymmErrors eobj = do + let obj = TGraphAsymmErrors (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGraphAsymmErrors" -> case obj of+ TGraphAsymmErrors fptr -> let obj' = TGraphAsymmErrors (castForeignPtr fptr :: ForeignPtr RawTGraphAsymmErrors)+ in return . EGADTTGraphAsymmErrors . GADTTGraphAsymmErrorsTGraphAsymmErrors $ obj'+ _ -> return . EGADTTGraphAsymmErrors $ GADTTGraphAsymmErrorsBottom++++++instance GADTTypeable TGraph where+ data GADTType TGraph a where + GADTTGraphTGraph :: TGraph -> GADTType TGraph TGraph+ GADTTGraphTGraphAsymmErrors :: TGraphAsymmErrors -> GADTType TGraph TGraphAsymmErrors+ GADTTGraphTCutG :: TCutG -> GADTType TGraph TCutG+ GADTTGraphTGraphBentErrors :: TGraphBentErrors -> GADTType TGraph TGraphBentErrors+ GADTTGraphTGraphErrors :: TGraphErrors -> GADTType TGraph TGraphErrors+ GADTTGraphTGraphPolar :: TGraphPolar -> GADTType TGraph TGraphPolar+ GADTTGraphTGraphQQ :: TGraphQQ -> GADTType TGraph TGraphQQ+ GADTTGraphBottom :: GADTType TGraph BottomType+ data EGADTType TGraph = forall a. EGADTTGraph (GADTType TGraph a)++castTGraph :: Exist TGraph -> IO (EGADTType TGraph)+castTGraph eobj = do + let obj = TGraph (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TGraph" -> case obj of+ TGraph fptr -> let obj' = TGraph (castForeignPtr fptr :: ForeignPtr RawTGraph)+ in return . EGADTTGraph . GADTTGraphTGraph $ obj'+ "TGraphAsymmErrors" -> case obj of+ TGraph fptr -> let obj' = TGraphAsymmErrors (castForeignPtr fptr :: ForeignPtr RawTGraphAsymmErrors)+ in return . EGADTTGraph . GADTTGraphTGraphAsymmErrors $ obj'+ "TCutG" -> case obj of+ TGraph fptr -> let obj' = TCutG (castForeignPtr fptr :: ForeignPtr RawTCutG)+ in return . EGADTTGraph . GADTTGraphTCutG $ obj'+ "TGraphBentErrors" -> case obj of+ TGraph fptr -> let obj' = TGraphBentErrors (castForeignPtr fptr :: ForeignPtr RawTGraphBentErrors)+ in return . EGADTTGraph . GADTTGraphTGraphBentErrors $ obj'+ "TGraphErrors" -> case obj of+ TGraph fptr -> let obj' = TGraphErrors (castForeignPtr fptr :: ForeignPtr RawTGraphErrors)+ in return . EGADTTGraph . GADTTGraphTGraphErrors $ obj'+ "TGraphPolar" -> case obj of+ TGraph fptr -> let obj' = TGraphPolar (castForeignPtr fptr :: ForeignPtr RawTGraphPolar)+ in return . EGADTTGraph . GADTTGraphTGraphPolar $ obj'+ "TGraphQQ" -> case obj of+ TGraph fptr -> let obj' = TGraphQQ (castForeignPtr fptr :: ForeignPtr RawTGraphQQ)+ in return . EGADTTGraph . GADTTGraphTGraphQQ $ obj'+ _ -> return . EGADTTGraph $ GADTTGraphBottom++++++instance GADTTypeable TF1 where+ data GADTType TF1 a where + GADTTF1TF1 :: TF1 -> GADTType TF1 TF1+ GADTTF1Bottom :: GADTType TF1 BottomType+ data EGADTType TF1 = forall a. EGADTTF1 (GADTType TF1 a)++castTF1 :: Exist TF1 -> IO (EGADTType TF1)+castTF1 eobj = do + let obj = TF1 (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TF1" -> case obj of+ TF1 fptr -> let obj' = TF1 (castForeignPtr fptr :: ForeignPtr RawTF1)+ in return . EGADTTF1 . GADTTF1TF1 $ obj'+ _ -> return . EGADTTF1 $ GADTTF1Bottom++++++instance GADTTypeable THStack where+ data GADTType THStack a where + GADTTHStackTHStack :: THStack -> GADTType THStack THStack+ GADTTHStackBottom :: GADTType THStack BottomType+ data EGADTType THStack = forall a. EGADTTHStack (GADTType THStack a)++castTHStack :: Exist THStack -> IO (EGADTType THStack)+castTHStack eobj = do + let obj = THStack (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "THStack" -> case obj of+ THStack fptr -> let obj' = THStack (castForeignPtr fptr :: ForeignPtr RawTHStack)+ in return . EGADTTHStack . GADTTHStackTHStack $ obj'+ _ -> return . EGADTTHStack $ GADTTHStackBottom++++++instance GADTTypeable TAttParticle where+ data GADTType TAttParticle a where + GADTTAttParticleTAttParticle :: TAttParticle -> GADTType TAttParticle TAttParticle+ GADTTAttParticleBottom :: GADTType TAttParticle BottomType+ data EGADTType TAttParticle = forall a. EGADTTAttParticle (GADTType TAttParticle a)++castTAttParticle :: Exist TAttParticle -> IO (EGADTType TAttParticle)+castTAttParticle eobj = do + let obj = TAttParticle (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TAttParticle" -> case obj of+ TAttParticle fptr -> let obj' = TAttParticle (castForeignPtr fptr :: ForeignPtr RawTAttParticle)+ in return . EGADTTAttParticle . GADTTAttParticleTAttParticle $ obj'+ _ -> return . EGADTTAttParticle $ GADTTAttParticleBottom++++++instance GADTTypeable TFormula where+ data GADTType TFormula a where + GADTTFormulaTFormula :: TFormula -> GADTType TFormula TFormula+ GADTTFormulaTF1 :: TF1 -> GADTType TFormula TF1+ GADTTFormulaBottom :: GADTType TFormula BottomType+ data EGADTType TFormula = forall a. EGADTTFormula (GADTType TFormula a)++castTFormula :: Exist TFormula -> IO (EGADTType TFormula)+castTFormula eobj = do + let obj = TFormula (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TFormula" -> case obj of+ TFormula fptr -> let obj' = TFormula (castForeignPtr fptr :: ForeignPtr RawTFormula)+ in return . EGADTTFormula . GADTTFormulaTFormula $ obj'+ "TF1" -> case obj of+ TFormula fptr -> let obj' = TF1 (castForeignPtr fptr :: ForeignPtr RawTF1)+ in return . EGADTTFormula . GADTTFormulaTF1 $ obj'+ _ -> return . EGADTTFormula $ GADTTFormulaBottom++++++instance GADTTypeable TClass where+ data GADTType TClass a where + GADTTClassTClass :: TClass -> GADTType TClass TClass+ GADTTClassBottom :: GADTType TClass BottomType+ data EGADTType TClass = forall a. EGADTTClass (GADTType TClass a)++castTClass :: Exist TClass -> IO (EGADTType TClass)+castTClass eobj = do + let obj = TClass (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TClass" -> case obj of+ TClass fptr -> let obj' = TClass (castForeignPtr fptr :: ForeignPtr RawTClass)+ in return . EGADTTClass . GADTTClassTClass $ obj'+ _ -> return . EGADTTClass $ GADTTClassBottom++++++instance GADTTypeable TNamed where+ data GADTType TNamed a where + GADTTNamedTNamed :: TNamed -> GADTType TNamed TNamed+ GADTTNamedTClass :: TClass -> GADTType TNamed TClass+ GADTTNamedTFormula :: TFormula -> GADTType TNamed TFormula+ GADTTNamedTAttParticle :: TAttParticle -> GADTType TNamed TAttParticle+ GADTTNamedTHStack :: THStack -> GADTType TNamed THStack+ GADTTNamedTF1 :: TF1 -> GADTType TNamed TF1+ GADTTNamedTGraph :: TGraph -> GADTType TNamed TGraph+ GADTTNamedTGraphAsymmErrors :: TGraphAsymmErrors -> GADTType TNamed TGraphAsymmErrors+ GADTTNamedTCutG :: TCutG -> GADTType TNamed TCutG+ GADTTNamedTGraphBentErrors :: TGraphBentErrors -> GADTType TNamed TGraphBentErrors+ GADTTNamedTGraphErrors :: TGraphErrors -> GADTType TNamed TGraphErrors+ GADTTNamedTGraphPolar :: TGraphPolar -> GADTType TNamed TGraphPolar+ GADTTNamedTGraphQQ :: TGraphQQ -> GADTType TNamed TGraphQQ+ GADTTNamedTShape :: TShape -> GADTType TNamed TShape+ GADTTNamedTBRIK :: TBRIK -> GADTType TNamed TBRIK+ GADTTNamedTTUBE :: TTUBE -> GADTType TNamed TTUBE+ GADTTNamedTPCON :: TPCON -> GADTType TNamed TPCON+ GADTTNamedTSPHE :: TSPHE -> GADTType TNamed TSPHE+ GADTTNamedTXTRU :: TXTRU -> GADTType TNamed TXTRU+ GADTTNamedTTree :: TTree -> GADTType TNamed TTree+ GADTTNamedTChain :: TChain -> GADTType TNamed TChain+ GADTTNamedTNtuple :: TNtuple -> GADTType TNamed TNtuple+ GADTTNamedTNtupleD :: TNtupleD -> GADTType TNamed TNtupleD+ GADTTNamedTTreeSQL :: TTreeSQL -> GADTType TNamed TTreeSQL+ GADTTNamedTEfficiency :: TEfficiency -> GADTType TNamed TEfficiency+ GADTTNamedTAxis :: TAxis -> GADTType TNamed TAxis+ GADTTNamedTLatex :: TLatex -> GADTType TNamed TLatex+ GADTTNamedTText :: TText -> GADTType TNamed TText+ GADTTNamedTDirectory :: TDirectory -> GADTType TNamed TDirectory+ GADTTNamedTDirectoryFile :: TDirectoryFile -> GADTType TNamed TDirectoryFile+ GADTTNamedTFile :: TFile -> GADTType TNamed TFile+ GADTTNamedTBranch :: TBranch -> GADTType TNamed TBranch+ GADTTNamedTH1 :: TH1 -> GADTType TNamed TH1+ GADTTNamedTH2 :: TH2 -> GADTType TNamed TH2+ GADTTNamedTH3 :: TH3 -> GADTType TNamed TH3+ GADTTNamedTH1C :: TH1C -> GADTType TNamed TH1C+ GADTTNamedTH1D :: TH1D -> GADTType TNamed TH1D+ GADTTNamedTH1F :: TH1F -> GADTType TNamed TH1F+ GADTTNamedTH1I :: TH1I -> GADTType TNamed TH1I+ GADTTNamedTH1S :: TH1S -> GADTType TNamed TH1S+ GADTTNamedTH2C :: TH2C -> GADTType TNamed TH2C+ GADTTNamedTH2D :: TH2D -> GADTType TNamed TH2D+ GADTTNamedTH2F :: TH2F -> GADTType TNamed TH2F+ GADTTNamedTH2I :: TH2I -> GADTType TNamed TH2I+ GADTTNamedTH2Poly :: TH2Poly -> GADTType TNamed TH2Poly+ GADTTNamedTH2S :: TH2S -> GADTType TNamed TH2S+ GADTTNamedTH3C :: TH3C -> GADTType TNamed TH3C+ GADTTNamedTH3D :: TH3D -> GADTType TNamed TH3D+ GADTTNamedTH3F :: TH3F -> GADTType TNamed TH3F+ GADTTNamedTH3I :: TH3I -> GADTType TNamed TH3I+ GADTTNamedTH3S :: TH3S -> GADTType TNamed TH3S+ GADTTNamedTRandom :: TRandom -> GADTType TNamed TRandom+ GADTTNamedBottom :: GADTType TNamed BottomType+ data EGADTType TNamed = forall a. EGADTTNamed (GADTType TNamed a)++castTNamed :: Exist TNamed -> IO (EGADTType TNamed)+castTNamed eobj = do + let obj = TNamed (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TNamed" -> case obj of+ TNamed fptr -> let obj' = TNamed (castForeignPtr fptr :: ForeignPtr RawTNamed)+ in return . EGADTTNamed . GADTTNamedTNamed $ obj'+ "TClass" -> case obj of+ TNamed fptr -> let obj' = TClass (castForeignPtr fptr :: ForeignPtr RawTClass)+ in return . EGADTTNamed . GADTTNamedTClass $ obj'+ "TFormula" -> case obj of+ TNamed fptr -> let obj' = TFormula (castForeignPtr fptr :: ForeignPtr RawTFormula)+ in return . EGADTTNamed . GADTTNamedTFormula $ obj'+ "TAttParticle" -> case obj of+ TNamed fptr -> let obj' = TAttParticle (castForeignPtr fptr :: ForeignPtr RawTAttParticle)+ in return . EGADTTNamed . GADTTNamedTAttParticle $ obj'+ "THStack" -> case obj of+ TNamed fptr -> let obj' = THStack (castForeignPtr fptr :: ForeignPtr RawTHStack)+ in return . EGADTTNamed . GADTTNamedTHStack $ obj'+ "TF1" -> case obj of+ TNamed fptr -> let obj' = TF1 (castForeignPtr fptr :: ForeignPtr RawTF1)+ in return . EGADTTNamed . GADTTNamedTF1 $ obj'+ "TGraph" -> case obj of+ TNamed fptr -> let obj' = TGraph (castForeignPtr fptr :: ForeignPtr RawTGraph)+ in return . EGADTTNamed . GADTTNamedTGraph $ obj'+ "TGraphAsymmErrors" -> case obj of+ TNamed fptr -> let obj' = TGraphAsymmErrors (castForeignPtr fptr :: ForeignPtr RawTGraphAsymmErrors)+ in return . EGADTTNamed . GADTTNamedTGraphAsymmErrors $ obj'+ "TCutG" -> case obj of+ TNamed fptr -> let obj' = TCutG (castForeignPtr fptr :: ForeignPtr RawTCutG)+ in return . EGADTTNamed . GADTTNamedTCutG $ obj'+ "TGraphBentErrors" -> case obj of+ TNamed fptr -> let obj' = TGraphBentErrors (castForeignPtr fptr :: ForeignPtr RawTGraphBentErrors)+ in return . EGADTTNamed . GADTTNamedTGraphBentErrors $ obj'+ "TGraphErrors" -> case obj of+ TNamed fptr -> let obj' = TGraphErrors (castForeignPtr fptr :: ForeignPtr RawTGraphErrors)+ in return . EGADTTNamed . GADTTNamedTGraphErrors $ obj'+ "TGraphPolar" -> case obj of+ TNamed fptr -> let obj' = TGraphPolar (castForeignPtr fptr :: ForeignPtr RawTGraphPolar)+ in return . EGADTTNamed . GADTTNamedTGraphPolar $ obj'+ "TGraphQQ" -> case obj of+ TNamed fptr -> let obj' = TGraphQQ (castForeignPtr fptr :: ForeignPtr RawTGraphQQ)+ in return . EGADTTNamed . GADTTNamedTGraphQQ $ obj'+ "TShape" -> case obj of+ TNamed fptr -> let obj' = TShape (castForeignPtr fptr :: ForeignPtr RawTShape)+ in return . EGADTTNamed . GADTTNamedTShape $ obj'+ "TBRIK" -> case obj of+ TNamed fptr -> let obj' = TBRIK (castForeignPtr fptr :: ForeignPtr RawTBRIK)+ in return . EGADTTNamed . GADTTNamedTBRIK $ obj'+ "TTUBE" -> case obj of+ TNamed fptr -> let obj' = TTUBE (castForeignPtr fptr :: ForeignPtr RawTTUBE)+ in return . EGADTTNamed . GADTTNamedTTUBE $ obj'+ "TPCON" -> case obj of+ TNamed fptr -> let obj' = TPCON (castForeignPtr fptr :: ForeignPtr RawTPCON)+ in return . EGADTTNamed . GADTTNamedTPCON $ obj'+ "TSPHE" -> case obj of+ TNamed fptr -> let obj' = TSPHE (castForeignPtr fptr :: ForeignPtr RawTSPHE)+ in return . EGADTTNamed . GADTTNamedTSPHE $ obj'+ "TXTRU" -> case obj of+ TNamed fptr -> let obj' = TXTRU (castForeignPtr fptr :: ForeignPtr RawTXTRU)+ in return . EGADTTNamed . GADTTNamedTXTRU $ obj'+ "TTree" -> case obj of+ TNamed fptr -> let obj' = TTree (castForeignPtr fptr :: ForeignPtr RawTTree)+ in return . EGADTTNamed . GADTTNamedTTree $ obj'+ "TChain" -> case obj of+ TNamed fptr -> let obj' = TChain (castForeignPtr fptr :: ForeignPtr RawTChain)+ in return . EGADTTNamed . GADTTNamedTChain $ obj'+ "TNtuple" -> case obj of+ TNamed fptr -> let obj' = TNtuple (castForeignPtr fptr :: ForeignPtr RawTNtuple)+ in return . EGADTTNamed . GADTTNamedTNtuple $ obj'+ "TNtupleD" -> case obj of+ TNamed fptr -> let obj' = TNtupleD (castForeignPtr fptr :: ForeignPtr RawTNtupleD)+ in return . EGADTTNamed . GADTTNamedTNtupleD $ obj'+ "TTreeSQL" -> case obj of+ TNamed fptr -> let obj' = TTreeSQL (castForeignPtr fptr :: ForeignPtr RawTTreeSQL)+ in return . EGADTTNamed . GADTTNamedTTreeSQL $ obj'+ "TEfficiency" -> case obj of+ TNamed fptr -> let obj' = TEfficiency (castForeignPtr fptr :: ForeignPtr RawTEfficiency)+ in return . EGADTTNamed . GADTTNamedTEfficiency $ obj'+ "TAxis" -> case obj of+ TNamed fptr -> let obj' = TAxis (castForeignPtr fptr :: ForeignPtr RawTAxis)+ in return . EGADTTNamed . GADTTNamedTAxis $ obj'+ "TLatex" -> case obj of+ TNamed fptr -> let obj' = TLatex (castForeignPtr fptr :: ForeignPtr RawTLatex)+ in return . EGADTTNamed . GADTTNamedTLatex $ obj'+ "TText" -> case obj of+ TNamed fptr -> let obj' = TText (castForeignPtr fptr :: ForeignPtr RawTText)+ in return . EGADTTNamed . GADTTNamedTText $ obj'+ "TDirectory" -> case obj of+ TNamed fptr -> let obj' = TDirectory (castForeignPtr fptr :: ForeignPtr RawTDirectory)+ in return . EGADTTNamed . GADTTNamedTDirectory $ obj'+ "TDirectoryFile" -> case obj of+ TNamed fptr -> let obj' = TDirectoryFile (castForeignPtr fptr :: ForeignPtr RawTDirectoryFile)+ in return . EGADTTNamed . GADTTNamedTDirectoryFile $ obj'+ "TFile" -> case obj of+ TNamed fptr -> let obj' = TFile (castForeignPtr fptr :: ForeignPtr RawTFile)+ in return . EGADTTNamed . GADTTNamedTFile $ obj'+ "TBranch" -> case obj of+ TNamed fptr -> let obj' = TBranch (castForeignPtr fptr :: ForeignPtr RawTBranch)+ in return . EGADTTNamed . GADTTNamedTBranch $ obj'+ "TH1" -> case obj of+ TNamed fptr -> let obj' = TH1 (castForeignPtr fptr :: ForeignPtr RawTH1)+ in return . EGADTTNamed . GADTTNamedTH1 $ obj'+ "TH2" -> case obj of+ TNamed fptr -> let obj' = TH2 (castForeignPtr fptr :: ForeignPtr RawTH2)+ in return . EGADTTNamed . GADTTNamedTH2 $ obj'+ "TH3" -> case obj of+ TNamed fptr -> let obj' = TH3 (castForeignPtr fptr :: ForeignPtr RawTH3)+ in return . EGADTTNamed . GADTTNamedTH3 $ obj'+ "TH1C" -> case obj of+ TNamed fptr -> let obj' = TH1C (castForeignPtr fptr :: ForeignPtr RawTH1C)+ in return . EGADTTNamed . GADTTNamedTH1C $ obj'+ "TH1D" -> case obj of+ TNamed fptr -> let obj' = TH1D (castForeignPtr fptr :: ForeignPtr RawTH1D)+ in return . EGADTTNamed . GADTTNamedTH1D $ obj'+ "TH1F" -> case obj of+ TNamed fptr -> let obj' = TH1F (castForeignPtr fptr :: ForeignPtr RawTH1F)+ in return . EGADTTNamed . GADTTNamedTH1F $ obj'+ "TH1I" -> case obj of+ TNamed fptr -> let obj' = TH1I (castForeignPtr fptr :: ForeignPtr RawTH1I)+ in return . EGADTTNamed . GADTTNamedTH1I $ obj'+ "TH1S" -> case obj of+ TNamed fptr -> let obj' = TH1S (castForeignPtr fptr :: ForeignPtr RawTH1S)+ in return . EGADTTNamed . GADTTNamedTH1S $ obj'+ "TH2C" -> case obj of+ TNamed fptr -> let obj' = TH2C (castForeignPtr fptr :: ForeignPtr RawTH2C)+ in return . EGADTTNamed . GADTTNamedTH2C $ obj'+ "TH2D" -> case obj of+ TNamed fptr -> let obj' = TH2D (castForeignPtr fptr :: ForeignPtr RawTH2D)+ in return . EGADTTNamed . GADTTNamedTH2D $ obj'+ "TH2F" -> case obj of+ TNamed fptr -> let obj' = TH2F (castForeignPtr fptr :: ForeignPtr RawTH2F)+ in return . EGADTTNamed . GADTTNamedTH2F $ obj'+ "TH2I" -> case obj of+ TNamed fptr -> let obj' = TH2I (castForeignPtr fptr :: ForeignPtr RawTH2I)+ in return . EGADTTNamed . GADTTNamedTH2I $ obj'+ "TH2Poly" -> case obj of+ TNamed fptr -> let obj' = TH2Poly (castForeignPtr fptr :: ForeignPtr RawTH2Poly)+ in return . EGADTTNamed . GADTTNamedTH2Poly $ obj'+ "TH2S" -> case obj of+ TNamed fptr -> let obj' = TH2S (castForeignPtr fptr :: ForeignPtr RawTH2S)+ in return . EGADTTNamed . GADTTNamedTH2S $ obj'+ "TH3C" -> case obj of+ TNamed fptr -> let obj' = TH3C (castForeignPtr fptr :: ForeignPtr RawTH3C)+ in return . EGADTTNamed . GADTTNamedTH3C $ obj'+ "TH3D" -> case obj of+ TNamed fptr -> let obj' = TH3D (castForeignPtr fptr :: ForeignPtr RawTH3D)+ in return . EGADTTNamed . GADTTNamedTH3D $ obj'+ "TH3F" -> case obj of+ TNamed fptr -> let obj' = TH3F (castForeignPtr fptr :: ForeignPtr RawTH3F)+ in return . EGADTTNamed . GADTTNamedTH3F $ obj'+ "TH3I" -> case obj of+ TNamed fptr -> let obj' = TH3I (castForeignPtr fptr :: ForeignPtr RawTH3I)+ in return . EGADTTNamed . GADTTNamedTH3I $ obj'+ "TH3S" -> case obj of+ TNamed fptr -> let obj' = TH3S (castForeignPtr fptr :: ForeignPtr RawTH3S)+ in return . EGADTTNamed . GADTTNamedTH3S $ obj'+ "TRandom" -> case obj of+ TNamed fptr -> let obj' = TRandom (castForeignPtr fptr :: ForeignPtr RawTRandom)+ in return . EGADTTNamed . GADTTNamedTRandom $ obj'+ _ -> return . EGADTTNamed $ GADTTNamedBottom++++++instance GADTTypeable TObject where+ data GADTType TObject a where + GADTTObjectTObject :: TObject -> GADTType TObject TObject+ GADTTObjectTNamed :: TNamed -> GADTType TObject TNamed+ GADTTObjectTClass :: TClass -> GADTType TObject TClass+ GADTTObjectTFormula :: TFormula -> GADTType TObject TFormula+ GADTTObjectTAttParticle :: TAttParticle -> GADTType TObject TAttParticle+ GADTTObjectTHStack :: THStack -> GADTType TObject THStack+ GADTTObjectTF1 :: TF1 -> GADTType TObject TF1+ GADTTObjectTGraph :: TGraph -> GADTType TObject TGraph+ GADTTObjectTGraphAsymmErrors :: TGraphAsymmErrors -> GADTType TObject TGraphAsymmErrors+ GADTTObjectTCutG :: TCutG -> GADTType TObject TCutG+ GADTTObjectTGraphBentErrors :: TGraphBentErrors -> GADTType TObject TGraphBentErrors+ GADTTObjectTGraphErrors :: TGraphErrors -> GADTType TObject TGraphErrors+ GADTTObjectTGraphPolar :: TGraphPolar -> GADTType TObject TGraphPolar+ GADTTObjectTGraphQQ :: TGraphQQ -> GADTType TObject TGraphQQ+ GADTTObjectTEllipse :: TEllipse -> GADTType TObject TEllipse+ GADTTObjectTArc :: TArc -> GADTType TObject TArc+ GADTTObjectTCrown :: TCrown -> GADTType TObject TCrown+ GADTTObjectTLine :: TLine -> GADTType TObject TLine+ GADTTObjectTArrow :: TArrow -> GADTType TObject TArrow+ GADTTObjectTGaxis :: TGaxis -> GADTType TObject TGaxis+ GADTTObjectTShape :: TShape -> GADTType TObject TShape+ GADTTObjectTBRIK :: TBRIK -> GADTType TObject TBRIK+ GADTTObjectTTUBE :: TTUBE -> GADTType TObject TTUBE+ GADTTObjectTPCON :: TPCON -> GADTType TObject TPCON+ GADTTObjectTSPHE :: TSPHE -> GADTType TObject TSPHE+ GADTTObjectTXTRU :: TXTRU -> GADTType TObject TXTRU+ GADTTObjectTBox :: TBox -> GADTType TObject TBox+ GADTTObjectTPave :: TPave -> GADTType TObject TPave+ GADTTObjectTPaveText :: TPaveText -> GADTType TObject TPaveText+ GADTTObjectTDiamond :: TDiamond -> GADTType TObject TDiamond+ GADTTObjectTPaveStats :: TPaveStats -> GADTType TObject TPaveStats+ GADTTObjectTPavesText :: TPavesText -> GADTType TObject TPavesText+ GADTTObjectTLegend :: TLegend -> GADTType TObject TLegend+ GADTTObjectTPaveLabel :: TPaveLabel -> GADTType TObject TPaveLabel+ GADTTObjectTPaveClass :: TPaveClass -> GADTType TObject TPaveClass+ GADTTObjectTWbox :: TWbox -> GADTType TObject TWbox+ GADTTObjectTFrame :: TFrame -> GADTType TObject TFrame+ GADTTObjectTSliderBox :: TSliderBox -> GADTType TObject TSliderBox+ GADTTObjectTTree :: TTree -> GADTType TObject TTree+ GADTTObjectTChain :: TChain -> GADTType TObject TChain+ GADTTObjectTNtuple :: TNtuple -> GADTType TObject TNtuple+ GADTTObjectTNtupleD :: TNtupleD -> GADTType TObject TNtupleD+ GADTTObjectTTreeSQL :: TTreeSQL -> GADTType TObject TTreeSQL+ GADTTObjectTPolyLine :: TPolyLine -> GADTType TObject TPolyLine+ GADTTObjectTCurlyLine :: TCurlyLine -> GADTType TObject TCurlyLine+ GADTTObjectTCurlyArc :: TCurlyArc -> GADTType TObject TCurlyArc+ GADTTObjectTEfficiency :: TEfficiency -> GADTType TObject TEfficiency+ GADTTObjectTAxis :: TAxis -> GADTType TObject TAxis+ GADTTObjectTLatex :: TLatex -> GADTType TObject TLatex+ GADTTObjectTText :: TText -> GADTType TObject TText+ GADTTObjectTDirectory :: TDirectory -> GADTType TObject TDirectory+ GADTTObjectTDirectoryFile :: TDirectoryFile -> GADTType TObject TDirectoryFile+ GADTTObjectTFile :: TFile -> GADTType TObject TFile+ GADTTObjectTBranch :: TBranch -> GADTType TObject TBranch+ GADTTObjectTVirtualTreePlayer :: TVirtualTreePlayer -> GADTType TObject TVirtualTreePlayer+ GADTTObjectTTreePlayer :: TTreePlayer -> GADTType TObject TTreePlayer+ GADTTObjectTH1 :: TH1 -> GADTType TObject TH1+ GADTTObjectTH2 :: TH2 -> GADTType TObject TH2+ GADTTObjectTH3 :: TH3 -> GADTType TObject TH3+ GADTTObjectTH1C :: TH1C -> GADTType TObject TH1C+ GADTTObjectTH1D :: TH1D -> GADTType TObject TH1D+ GADTTObjectTH1F :: TH1F -> GADTType TObject TH1F+ GADTTObjectTH1I :: TH1I -> GADTType TObject TH1I+ GADTTObjectTH1S :: TH1S -> GADTType TObject TH1S+ GADTTObjectTH2C :: TH2C -> GADTType TObject TH2C+ GADTTObjectTH2D :: TH2D -> GADTType TObject TH2D+ GADTTObjectTH2F :: TH2F -> GADTType TObject TH2F+ GADTTObjectTH2I :: TH2I -> GADTType TObject TH2I+ GADTTObjectTH2Poly :: TH2Poly -> GADTType TObject TH2Poly+ GADTTObjectTH2S :: TH2S -> GADTType TObject TH2S+ GADTTObjectTH3C :: TH3C -> GADTType TObject TH3C+ GADTTObjectTH3D :: TH3D -> GADTType TObject TH3D+ GADTTObjectTH3F :: TH3F -> GADTType TObject TH3F+ GADTTObjectTH3I :: TH3I -> GADTType TObject TH3I+ GADTTObjectTH3S :: TH3S -> GADTType TObject TH3S+ GADTTObjectTVirtualPad :: TVirtualPad -> GADTType TObject TVirtualPad+ GADTTObjectTPad :: TPad -> GADTType TObject TPad+ GADTTObjectTButton :: TButton -> GADTType TObject TButton+ GADTTObjectTGroupButton :: TGroupButton -> GADTType TObject TGroupButton+ GADTTObjectTCanvas :: TCanvas -> GADTType TObject TCanvas+ GADTTObjectTDialogCanvas :: TDialogCanvas -> GADTType TObject TDialogCanvas+ GADTTObjectTInspectCanvas :: TInspectCanvas -> GADTType TObject TInspectCanvas+ GADTTObjectTEvePad :: TEvePad -> GADTType TObject TEvePad+ GADTTObjectTSlider :: TSlider -> GADTType TObject TSlider+ GADTTObjectTApplication :: TApplication -> GADTType TObject TApplication+ GADTTObjectTRint :: TRint -> GADTType TObject TRint+ GADTTObjectTRandom :: TRandom -> GADTType TObject TRandom+ GADTTObjectBottom :: GADTType TObject BottomType+ data EGADTType TObject = forall a. EGADTTObject (GADTType TObject a)++castTObject :: Exist TObject -> IO (EGADTType TObject)+castTObject eobj = do + let obj = TObject (get_fptr eobj)+ etclass <- isA obj + cname <- case etclass of + ETClass tclass -> getName tclass+ case cname of + "TObject" -> case obj of+ TObject fptr -> let obj' = TObject (castForeignPtr fptr :: ForeignPtr RawTObject)+ in return . EGADTTObject . GADTTObjectTObject $ obj'+ "TNamed" -> case obj of+ TObject fptr -> let obj' = TNamed (castForeignPtr fptr :: ForeignPtr RawTNamed)+ in return . EGADTTObject . GADTTObjectTNamed $ obj'+ "TClass" -> case obj of+ TObject fptr -> let obj' = TClass (castForeignPtr fptr :: ForeignPtr RawTClass)+ in return . EGADTTObject . GADTTObjectTClass $ obj'+ "TFormula" -> case obj of+ TObject fptr -> let obj' = TFormula (castForeignPtr fptr :: ForeignPtr RawTFormula)+ in return . EGADTTObject . GADTTObjectTFormula $ obj'+ "TAttParticle" -> case obj of+ TObject fptr -> let obj' = TAttParticle (castForeignPtr fptr :: ForeignPtr RawTAttParticle)+ in return . EGADTTObject . GADTTObjectTAttParticle $ obj'+ "THStack" -> case obj of+ TObject fptr -> let obj' = THStack (castForeignPtr fptr :: ForeignPtr RawTHStack)+ in return . EGADTTObject . GADTTObjectTHStack $ obj'+ "TF1" -> case obj of+ TObject fptr -> let obj' = TF1 (castForeignPtr fptr :: ForeignPtr RawTF1)+ in return . EGADTTObject . GADTTObjectTF1 $ obj'+ "TGraph" -> case obj of+ TObject fptr -> let obj' = TGraph (castForeignPtr fptr :: ForeignPtr RawTGraph)+ in return . EGADTTObject . GADTTObjectTGraph $ obj'+ "TGraphAsymmErrors" -> case obj of+ TObject fptr -> let obj' = TGraphAsymmErrors (castForeignPtr fptr :: ForeignPtr RawTGraphAsymmErrors)+ in return . EGADTTObject . GADTTObjectTGraphAsymmErrors $ obj'+ "TCutG" -> case obj of+ TObject fptr -> let obj' = TCutG (castForeignPtr fptr :: ForeignPtr RawTCutG)+ in return . EGADTTObject . GADTTObjectTCutG $ obj'+ "TGraphBentErrors" -> case obj of+ TObject fptr -> let obj' = TGraphBentErrors (castForeignPtr fptr :: ForeignPtr RawTGraphBentErrors)+ in return . EGADTTObject . GADTTObjectTGraphBentErrors $ obj'+ "TGraphErrors" -> case obj of+ TObject fptr -> let obj' = TGraphErrors (castForeignPtr fptr :: ForeignPtr RawTGraphErrors)+ in return . EGADTTObject . GADTTObjectTGraphErrors $ obj'+ "TGraphPolar" -> case obj of+ TObject fptr -> let obj' = TGraphPolar (castForeignPtr fptr :: ForeignPtr RawTGraphPolar)+ in return . EGADTTObject . GADTTObjectTGraphPolar $ obj'+ "TGraphQQ" -> case obj of+ TObject fptr -> let obj' = TGraphQQ (castForeignPtr fptr :: ForeignPtr RawTGraphQQ)+ in return . EGADTTObject . GADTTObjectTGraphQQ $ obj'+ "TEllipse" -> case obj of+ TObject fptr -> let obj' = TEllipse (castForeignPtr fptr :: ForeignPtr RawTEllipse)+ in return . EGADTTObject . GADTTObjectTEllipse $ obj'+ "TArc" -> case obj of+ TObject fptr -> let obj' = TArc (castForeignPtr fptr :: ForeignPtr RawTArc)+ in return . EGADTTObject . GADTTObjectTArc $ obj'+ "TCrown" -> case obj of+ TObject fptr -> let obj' = TCrown (castForeignPtr fptr :: ForeignPtr RawTCrown)+ in return . EGADTTObject . GADTTObjectTCrown $ obj'+ "TLine" -> case obj of+ TObject fptr -> let obj' = TLine (castForeignPtr fptr :: ForeignPtr RawTLine)+ in return . EGADTTObject . GADTTObjectTLine $ obj'+ "TArrow" -> case obj of+ TObject fptr -> let obj' = TArrow (castForeignPtr fptr :: ForeignPtr RawTArrow)+ in return . EGADTTObject . GADTTObjectTArrow $ obj'+ "TGaxis" -> case obj of+ TObject fptr -> let obj' = TGaxis (castForeignPtr fptr :: ForeignPtr RawTGaxis)+ in return . EGADTTObject . GADTTObjectTGaxis $ obj'+ "TShape" -> case obj of+ TObject fptr -> let obj' = TShape (castForeignPtr fptr :: ForeignPtr RawTShape)+ in return . EGADTTObject . GADTTObjectTShape $ obj'+ "TBRIK" -> case obj of+ TObject fptr -> let obj' = TBRIK (castForeignPtr fptr :: ForeignPtr RawTBRIK)+ in return . EGADTTObject . GADTTObjectTBRIK $ obj'+ "TTUBE" -> case obj of+ TObject fptr -> let obj' = TTUBE (castForeignPtr fptr :: ForeignPtr RawTTUBE)+ in return . EGADTTObject . GADTTObjectTTUBE $ obj'+ "TPCON" -> case obj of+ TObject fptr -> let obj' = TPCON (castForeignPtr fptr :: ForeignPtr RawTPCON)+ in return . EGADTTObject . GADTTObjectTPCON $ obj'+ "TSPHE" -> case obj of+ TObject fptr -> let obj' = TSPHE (castForeignPtr fptr :: ForeignPtr RawTSPHE)+ in return . EGADTTObject . GADTTObjectTSPHE $ obj'+ "TXTRU" -> case obj of+ TObject fptr -> let obj' = TXTRU (castForeignPtr fptr :: ForeignPtr RawTXTRU)+ in return . EGADTTObject . GADTTObjectTXTRU $ obj'+ "TBox" -> case obj of+ TObject fptr -> let obj' = TBox (castForeignPtr fptr :: ForeignPtr RawTBox)+ in return . EGADTTObject . GADTTObjectTBox $ obj'+ "TPave" -> case obj of+ TObject fptr -> let obj' = TPave (castForeignPtr fptr :: ForeignPtr RawTPave)+ in return . EGADTTObject . GADTTObjectTPave $ obj'+ "TPaveText" -> case obj of+ TObject fptr -> let obj' = TPaveText (castForeignPtr fptr :: ForeignPtr RawTPaveText)+ in return . EGADTTObject . GADTTObjectTPaveText $ obj'+ "TDiamond" -> case obj of+ TObject fptr -> let obj' = TDiamond (castForeignPtr fptr :: ForeignPtr RawTDiamond)+ in return . EGADTTObject . GADTTObjectTDiamond $ obj'+ "TPaveStats" -> case obj of+ TObject fptr -> let obj' = TPaveStats (castForeignPtr fptr :: ForeignPtr RawTPaveStats)+ in return . EGADTTObject . GADTTObjectTPaveStats $ obj'+ "TPavesText" -> case obj of+ TObject fptr -> let obj' = TPavesText (castForeignPtr fptr :: ForeignPtr RawTPavesText)+ in return . EGADTTObject . GADTTObjectTPavesText $ obj'+ "TLegend" -> case obj of+ TObject fptr -> let obj' = TLegend (castForeignPtr fptr :: ForeignPtr RawTLegend)+ in return . EGADTTObject . GADTTObjectTLegend $ obj'+ "TPaveLabel" -> case obj of+ TObject fptr -> let obj' = TPaveLabel (castForeignPtr fptr :: ForeignPtr RawTPaveLabel)+ in return . EGADTTObject . GADTTObjectTPaveLabel $ obj'+ "TPaveClass" -> case obj of+ TObject fptr -> let obj' = TPaveClass (castForeignPtr fptr :: ForeignPtr RawTPaveClass)+ in return . EGADTTObject . GADTTObjectTPaveClass $ obj'+ "TWbox" -> case obj of+ TObject fptr -> let obj' = TWbox (castForeignPtr fptr :: ForeignPtr RawTWbox)+ in return . EGADTTObject . GADTTObjectTWbox $ obj'+ "TFrame" -> case obj of+ TObject fptr -> let obj' = TFrame (castForeignPtr fptr :: ForeignPtr RawTFrame)+ in return . EGADTTObject . GADTTObjectTFrame $ obj'+ "TSliderBox" -> case obj of+ TObject fptr -> let obj' = TSliderBox (castForeignPtr fptr :: ForeignPtr RawTSliderBox)+ in return . EGADTTObject . GADTTObjectTSliderBox $ obj'+ "TTree" -> case obj of+ TObject fptr -> let obj' = TTree (castForeignPtr fptr :: ForeignPtr RawTTree)+ in return . EGADTTObject . GADTTObjectTTree $ obj'+ "TChain" -> case obj of+ TObject fptr -> let obj' = TChain (castForeignPtr fptr :: ForeignPtr RawTChain)+ in return . EGADTTObject . GADTTObjectTChain $ obj'+ "TNtuple" -> case obj of+ TObject fptr -> let obj' = TNtuple (castForeignPtr fptr :: ForeignPtr RawTNtuple)+ in return . EGADTTObject . GADTTObjectTNtuple $ obj'+ "TNtupleD" -> case obj of+ TObject fptr -> let obj' = TNtupleD (castForeignPtr fptr :: ForeignPtr RawTNtupleD)+ in return . EGADTTObject . GADTTObjectTNtupleD $ obj'+ "TTreeSQL" -> case obj of+ TObject fptr -> let obj' = TTreeSQL (castForeignPtr fptr :: ForeignPtr RawTTreeSQL)+ in return . EGADTTObject . GADTTObjectTTreeSQL $ obj'+ "TPolyLine" -> case obj of+ TObject fptr -> let obj' = TPolyLine (castForeignPtr fptr :: ForeignPtr RawTPolyLine)+ in return . EGADTTObject . GADTTObjectTPolyLine $ obj'+ "TCurlyLine" -> case obj of+ TObject fptr -> let obj' = TCurlyLine (castForeignPtr fptr :: ForeignPtr RawTCurlyLine)+ in return . EGADTTObject . GADTTObjectTCurlyLine $ obj'+ "TCurlyArc" -> case obj of+ TObject fptr -> let obj' = TCurlyArc (castForeignPtr fptr :: ForeignPtr RawTCurlyArc)+ in return . EGADTTObject . GADTTObjectTCurlyArc $ obj'+ "TEfficiency" -> case obj of+ TObject fptr -> let obj' = TEfficiency (castForeignPtr fptr :: ForeignPtr RawTEfficiency)+ in return . EGADTTObject . GADTTObjectTEfficiency $ obj'+ "TAxis" -> case obj of+ TObject fptr -> let obj' = TAxis (castForeignPtr fptr :: ForeignPtr RawTAxis)+ in return . EGADTTObject . GADTTObjectTAxis $ obj'+ "TLatex" -> case obj of+ TObject fptr -> let obj' = TLatex (castForeignPtr fptr :: ForeignPtr RawTLatex)+ in return . EGADTTObject . GADTTObjectTLatex $ obj'+ "TText" -> case obj of+ TObject fptr -> let obj' = TText (castForeignPtr fptr :: ForeignPtr RawTText)+ in return . EGADTTObject . GADTTObjectTText $ obj'+ "TDirectory" -> case obj of+ TObject fptr -> let obj' = TDirectory (castForeignPtr fptr :: ForeignPtr RawTDirectory)+ in return . EGADTTObject . GADTTObjectTDirectory $ obj'+ "TDirectoryFile" -> case obj of+ TObject fptr -> let obj' = TDirectoryFile (castForeignPtr fptr :: ForeignPtr RawTDirectoryFile)+ in return . EGADTTObject . GADTTObjectTDirectoryFile $ obj'+ "TFile" -> case obj of+ TObject fptr -> let obj' = TFile (castForeignPtr fptr :: ForeignPtr RawTFile)+ in return . EGADTTObject . GADTTObjectTFile $ obj'+ "TBranch" -> case obj of+ TObject fptr -> let obj' = TBranch (castForeignPtr fptr :: ForeignPtr RawTBranch)+ in return . EGADTTObject . GADTTObjectTBranch $ obj'+ "TVirtualTreePlayer" -> case obj of+ TObject fptr -> let obj' = TVirtualTreePlayer (castForeignPtr fptr :: ForeignPtr RawTVirtualTreePlayer)+ in return . EGADTTObject . GADTTObjectTVirtualTreePlayer $ obj'+ "TTreePlayer" -> case obj of+ TObject fptr -> let obj' = TTreePlayer (castForeignPtr fptr :: ForeignPtr RawTTreePlayer)+ in return . EGADTTObject . GADTTObjectTTreePlayer $ obj'+ "TH1" -> case obj of+ TObject fptr -> let obj' = TH1 (castForeignPtr fptr :: ForeignPtr RawTH1)+ in return . EGADTTObject . GADTTObjectTH1 $ obj'+ "TH2" -> case obj of+ TObject fptr -> let obj' = TH2 (castForeignPtr fptr :: ForeignPtr RawTH2)+ in return . EGADTTObject . GADTTObjectTH2 $ obj'+ "TH3" -> case obj of+ TObject fptr -> let obj' = TH3 (castForeignPtr fptr :: ForeignPtr RawTH3)+ in return . EGADTTObject . GADTTObjectTH3 $ obj'+ "TH1C" -> case obj of+ TObject fptr -> let obj' = TH1C (castForeignPtr fptr :: ForeignPtr RawTH1C)+ in return . EGADTTObject . GADTTObjectTH1C $ obj'+ "TH1D" -> case obj of+ TObject fptr -> let obj' = TH1D (castForeignPtr fptr :: ForeignPtr RawTH1D)+ in return . EGADTTObject . GADTTObjectTH1D $ obj'+ "TH1F" -> case obj of+ TObject fptr -> let obj' = TH1F (castForeignPtr fptr :: ForeignPtr RawTH1F)+ in return . EGADTTObject . GADTTObjectTH1F $ obj'+ "TH1I" -> case obj of+ TObject fptr -> let obj' = TH1I (castForeignPtr fptr :: ForeignPtr RawTH1I)+ in return . EGADTTObject . GADTTObjectTH1I $ obj'+ "TH1S" -> case obj of+ TObject fptr -> let obj' = TH1S (castForeignPtr fptr :: ForeignPtr RawTH1S)+ in return . EGADTTObject . GADTTObjectTH1S $ obj'+ "TH2C" -> case obj of+ TObject fptr -> let obj' = TH2C (castForeignPtr fptr :: ForeignPtr RawTH2C)+ in return . EGADTTObject . GADTTObjectTH2C $ obj'+ "TH2D" -> case obj of+ TObject fptr -> let obj' = TH2D (castForeignPtr fptr :: ForeignPtr RawTH2D)+ in return . EGADTTObject . GADTTObjectTH2D $ obj'+ "TH2F" -> case obj of+ TObject fptr -> let obj' = TH2F (castForeignPtr fptr :: ForeignPtr RawTH2F)+ in return . EGADTTObject . GADTTObjectTH2F $ obj'+ "TH2I" -> case obj of+ TObject fptr -> let obj' = TH2I (castForeignPtr fptr :: ForeignPtr RawTH2I)+ in return . EGADTTObject . GADTTObjectTH2I $ obj'+ "TH2Poly" -> case obj of+ TObject fptr -> let obj' = TH2Poly (castForeignPtr fptr :: ForeignPtr RawTH2Poly)+ in return . EGADTTObject . GADTTObjectTH2Poly $ obj'+ "TH2S" -> case obj of+ TObject fptr -> let obj' = TH2S (castForeignPtr fptr :: ForeignPtr RawTH2S)+ in return . EGADTTObject . GADTTObjectTH2S $ obj'+ "TH3C" -> case obj of+ TObject fptr -> let obj' = TH3C (castForeignPtr fptr :: ForeignPtr RawTH3C)+ in return . EGADTTObject . GADTTObjectTH3C $ obj'+ "TH3D" -> case obj of+ TObject fptr -> let obj' = TH3D (castForeignPtr fptr :: ForeignPtr RawTH3D)+ in return . EGADTTObject . GADTTObjectTH3D $ obj'+ "TH3F" -> case obj of+ TObject fptr -> let obj' = TH3F (castForeignPtr fptr :: ForeignPtr RawTH3F)+ in return . EGADTTObject . GADTTObjectTH3F $ obj'+ "TH3I" -> case obj of+ TObject fptr -> let obj' = TH3I (castForeignPtr fptr :: ForeignPtr RawTH3I)+ in return . EGADTTObject . GADTTObjectTH3I $ obj'+ "TH3S" -> case obj of+ TObject fptr -> let obj' = TH3S (castForeignPtr fptr :: ForeignPtr RawTH3S)+ in return . EGADTTObject . GADTTObjectTH3S $ obj'+ "TVirtualPad" -> case obj of+ TObject fptr -> let obj' = TVirtualPad (castForeignPtr fptr :: ForeignPtr RawTVirtualPad)+ in return . EGADTTObject . GADTTObjectTVirtualPad $ obj'+ "TPad" -> case obj of+ TObject fptr -> let obj' = TPad (castForeignPtr fptr :: ForeignPtr RawTPad)+ in return . EGADTTObject . GADTTObjectTPad $ obj'+ "TButton" -> case obj of+ TObject fptr -> let obj' = TButton (castForeignPtr fptr :: ForeignPtr RawTButton)+ in return . EGADTTObject . GADTTObjectTButton $ obj'+ "TGroupButton" -> case obj of+ TObject fptr -> let obj' = TGroupButton (castForeignPtr fptr :: ForeignPtr RawTGroupButton)+ in return . EGADTTObject . GADTTObjectTGroupButton $ obj'+ "TCanvas" -> case obj of+ TObject fptr -> let obj' = TCanvas (castForeignPtr fptr :: ForeignPtr RawTCanvas)+ in return . EGADTTObject . GADTTObjectTCanvas $ obj'+ "TDialogCanvas" -> case obj of+ TObject fptr -> let obj' = TDialogCanvas (castForeignPtr fptr :: ForeignPtr RawTDialogCanvas)+ in return . EGADTTObject . GADTTObjectTDialogCanvas $ obj'+ "TInspectCanvas" -> case obj of+ TObject fptr -> let obj' = TInspectCanvas (castForeignPtr fptr :: ForeignPtr RawTInspectCanvas)+ in return . EGADTTObject . GADTTObjectTInspectCanvas $ obj'+ "TEvePad" -> case obj of+ TObject fptr -> let obj' = TEvePad (castForeignPtr fptr :: ForeignPtr RawTEvePad)+ in return . EGADTTObject . GADTTObjectTEvePad $ obj'+ "TSlider" -> case obj of+ TObject fptr -> let obj' = TSlider (castForeignPtr fptr :: ForeignPtr RawTSlider)+ in return . EGADTTObject . GADTTObjectTSlider $ obj'+ "TApplication" -> case obj of+ TObject fptr -> let obj' = TApplication (castForeignPtr fptr :: ForeignPtr RawTApplication)+ in return . EGADTTObject . GADTTObjectTApplication $ obj'+ "TRint" -> case obj of+ TObject fptr -> let obj' = TRint (castForeignPtr fptr :: ForeignPtr RawTRint)+ in return . EGADTTObject . GADTTObjectTRint $ obj'+ "TRandom" -> case obj of+ TObject fptr -> let obj' = TRandom (castForeignPtr fptr :: ForeignPtr RawTRandom)+ in return . EGADTTObject . GADTTObjectTRandom $ obj'+ _ -> return . EGADTTObject $ GADTTObjectBottom+++++++