packages feed

HROOT-io 0.8 → 0.9

raw patch · 21 files changed

+273/−565 lines, 21 filesdep +fficxxdep +template-haskelldep ~fficxx-runtime

Dependencies added: fficxx, template-haskell

Dependency ranges changed: fficxx-runtime

Files

− CHANGES
@@ -1,39 +0,0 @@-0.5.0: 31 Jul 2011-   * initial preview release--0.5.1: 3 Aug 2011-   * support for delete --0.6: 16 Aug 2011-   * implement Deletable. delete method for every object-   * refactor HROOT generated file names (Interface.hs, Implementation.hs, FFI.hs) --0.6.3: 22 Sep 2011 -   * Implement Existential Types --0.6.4: 28 Sep 2011 -   * add many TH2 class methods--0.6.6: 7 Oct 2011 -   * do not need OverlappingInstances, IncoherentInstances, UndecidableInstances ---0.6.7: 18 Oct 2011-   * implement almost all TH1 class methods--0.6.8: 20 Oct 2011-   * implement almost all class methods of TH2, TH3, TFormula, TF1 and TGraph--0.6.9: 20 Oct 2011 -   * implement almost all class methods of TLine, TAttLine, TAttMarker, TAttText and TAttPad--0.7 : 8 Nov 2011-   * separate all class interfaces and implementation in different modules-   * overhaul Existential --0.7.1 : 12 Nov 2011 -   * support for static methods-   * add TROOT--0.8 : 17 Jun 2014-   * separate packages into HROOT-core, HROOT-hist, HROOT-io, HROOT-math, HROOT-graf and HROOT is now an umbrella package
− Config.hs
@@ -1,85 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}--module Config where- -import Distribution.Simple-import Distribution.Simple.Setup-import Distribution.PackageDescription-import Distribution.Simple.LocalBuildInfo--import System.Exit-import System.Process--config :: LocalBuildInfo -> IO (Maybe HookedBuildInfo)-config bInfo = do -  (excode, out, err) <- readProcessWithExitCode "root-config" ["--glibs"] ""-  liboptset' <- case excode of -                  ExitSuccess -> do  -                    return . Just .  mkLibraryOptionSet . words $ out-                  _ -> do -                    putStrLn $ "root-config failure but I am installing HROOT without ROOT. It will not work. This is only for documentation." -                    return Nothing              -  (excode2,out2,err2) <- readProcessWithExitCode "root-config" ["--incdir"] ""-  incdir' <- case excode2 of -               ExitSuccess -> do  -                 return . Just . head . words $ out2-               _ -> do -                 putStrLn $ "root-config failure but I am installing HROOT without ROOT. It will not work. This is only for documentation." -                 return Nothing-  let Just lib = library . localPkgDescr $ bInfo-      buildinfo = libBuildInfo lib-  let (r :: Maybe HookedBuildInfo) = case liboptset' of -            Nothing -> Nothing-            Just liboptset -> -              case incdir' of -                Nothing -> Nothing -                Just incdir -> -                  let hbi = emptyBuildInfo { extraLibs = extraLibs buildinfo -                                                         ++ libs liboptset-                                           , extraLibDirs = libdirs liboptset -                                           , includeDirs = incdir : includeDirs buildinfo-                                           }-                  in Just (Just hbi, []) -  return r ---data LibraryOptionSet = LibraryOptionSet { -  libs :: [String], -  libdirs :: [String], -  libopts :: [String]-} deriving Show--data LibraryOption = Lib String -                   | Dir String-                   | Opt String -                   deriving Show--mkLibraryOptionSet :: [String] -> LibraryOptionSet-mkLibraryOptionSet strs = let opts = libraryOptions strs-                          in  foldr f (LibraryOptionSet [] [] []) opts -  where f x (LibraryOptionSet l d o) = case x of-                                         Lib st -> LibraryOptionSet (st:l) d o -                                         Dir st -> LibraryOptionSet l (st:d) o -                                         Opt st -> LibraryOptionSet l d (st:o) --libraryOptions :: [String] -> [LibraryOption] -- LibraryOptionSet -libraryOptions = map f -  where f x = let r = parseLibraryOptionClassifier x-              in  case r of -                    Left msg -> error (show msg)-                    Right result -> result---parseLibraryOptionClassifier :: String -> Either String LibraryOption -parseLibraryOptionClassifier [] = Left "empty option"-parseLibraryOptionClassifier str@(x:xs) = -  case x of-    '-' -> if null xs -             then Left "parse error"-             else let (y:ys) = xs-                  in  case y of-                        'L' -> Right (Dir ys)-                        'l' -> Right (Lib ys)-                        _ -> Right (Opt str)-    _ -> Right (Opt str) -
HROOT-io.cabal view
@@ -1,19 +1,17 @@-Name:		HROOT-io-Version:	0.8-Synopsis:	Haskell binding to ROOT IO modules-Description: 	HROOT is a haskell Foreign Function Interface (FFI) binding to ROOT. ROOT(http://root.cern.ch) is an object-oriented program and library developed by CERN for physics data analysis.+Name:                HROOT-io+Version:     0.9+Synopsis:    Haskell binding to ROOT IO modules+Description:         HROOT is a haskell Foreign Function Interface (FFI) binding to ROOT. ROOT(http://root.cern.ch) is an object-oriented program and library developed by CERN for physics data analysis. Homepage:       http://ianwookim.org/HROOT-License:        LGPL-2.1-License-file:   LICENSE-Author:		Ian-Woo Kim-Maintainer: 	Ian-Woo Kim <ianwookim@gmail.com>+license: LGPL-2.1+license-file: LICENSE+Author:              Ian-Woo Kim+Maintainer:  Ian-Woo Kim <ianwookim@gmail.com> Category:       Graphics, Statistics, Math, Numerical Tested-with:    GHC >= 7.6-Build-Type: 	Custom+Build-Type:  Custom cabal-version:  >=1.10-Extra-source-files: -                       CHANGES-                       Config.hs+Extra-source-files:                        csrc/HROOTIOTDirectoryFile.h                        csrc/HROOTIOTFile.h                        csrc/HROOTIOTDirectoryFile.cpp@@ -27,7 +25,8 @@   hs-source-dirs: src   ghc-options:  -Wall -funbox-strict-fields -fno-warn-unused-do-bind -fno-warn-orphans -fno-warn-unused-imports   ghc-prof-options: -caf-all -auto-all-  Build-Depends:      base>4 && < 5, fficxx-runtime >= 0.0.999 ,HROOT-core+  cc-options: -std=c++14+  Build-Depends:      base>4 && < 5, fficxx >= 0.3, fficxx-runtime >= 0.3, template-haskell,HROOT-core   Exposed-Modules:                        HROOT.IO                        HROOT.IO.TDirectoryFile@@ -42,22 +41,19 @@                        HROOT.IO.TFile.Cast                        HROOT.IO.TDirectoryFile.Implementation                        HROOT.IO.TFile.Implementation-  +   Other-Modules:    extra-lib-dirs:    extra-libraries:    stdc++ -  Include-dirs:       csrc  -  Install-includes:   +  Include-dirs:       csrc +  Install-includes:                        HROOT-ioType.h                        HROOTIOTDirectoryFile.h                        HROOTIOTFile.h -  C-sources:          +  C-sources:                        csrc/HROOTIOTDirectoryFile.cpp                        csrc/HROOTIOTFile.cpp---     
csrc/HROOT-ioType.h view
@@ -10,13 +10,16 @@ typedef TDirectoryFile_t * TDirectoryFile_p;  typedef TDirectoryFile_t const* const_TDirectoryFile_p;  + // Opaque type definition for TFile  typedef struct TFile_tag TFile_t;  typedef TFile_t * TFile_p;  typedef TFile_t const* const_TFile_p;  + #endif // __HROOT_IO__  #ifdef __cplusplus } #endif+
csrc/HROOTIOTDirectoryFile.cpp view
@@ -1,33 +1,10 @@ #include <MacroPatternMatch.h>- #include "HROOTCoreTDirectory.h" #include "TDirectoryFile.h" #include "HROOTIOTDirectoryFile.h" -using namespace std;  -template<class ToType, class FromType>-const ToType* to_const(const FromType* x) {-  return reinterpret_cast<const ToType*>(x);-}--template<class ToType, class FromType>-ToType* to_nonconst(FromType* x) {-  return reinterpret_cast<ToType*>(x);-}--template<class ToType, class FromType>-const ToType& to_constref(const FromType& x) {-  return reinterpret_cast<const ToType&>(x);-}--template<class ToType, class FromType>-ToType& to_nonconstref(FromType& x) {-  return reinterpret_cast<ToType&>(x);-}-- #define CHECKPROTECT(x,y) IS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)  #define TYPECASTMETHOD(cname,mname,oname) \@@ -44,5 +21,4 @@ TDIRECTORYFILE_DEF_VIRT(TDirectoryFile)  TDIRECTORYFILE_DEF_NONVIRT(TDirectoryFile)- 
csrc/HROOTIOTDirectoryFile.h view
@@ -1,23 +1,22 @@ #ifdef __cplusplus extern "C" { -#endif +#endif  #ifndef __HROOT_IO__TDirectoryFile__ #define __HROOT_IO__TDirectoryFile__  #include "HROOT-ioType.h"- #include "HROOTCoreTDirectory.h" #include "HROOTCoreTNamed.h" #include "HROOTCoreTObject.h" #include "HROOTCoreDeletable.h" #include "HROOT-coreType.h" -#undef TDIRECTORYFILE_DECL_VIRT+#undef TDIRECTORYFILE_DECL_VIRT  #define TDIRECTORYFILE_DECL_VIRT(Type) \  -#undef TDIRECTORYFILE_DECL_NONVIRT+#undef TDIRECTORYFILE_DECL_NONVIRT  #define TDIRECTORYFILE_DECL_NONVIRT(Type) \  @@ -46,3 +45,4 @@ #ifdef __cplusplus } #endif+
csrc/HROOTIOTFile.cpp view
@@ -1,33 +1,10 @@ #include <MacroPatternMatch.h>- #include "HROOTIOTDirectoryFile.h" #include "TFile.h" #include "HROOTIOTFile.h" -using namespace std;  -template<class ToType, class FromType>-const ToType* to_const(const FromType* x) {-  return reinterpret_cast<const ToType*>(x);-}--template<class ToType, class FromType>-ToType* to_nonconst(FromType* x) {-  return reinterpret_cast<ToType*>(x);-}--template<class ToType, class FromType>-const ToType& to_constref(const FromType& x) {-  return reinterpret_cast<const ToType&>(x);-}--template<class ToType, class FromType>-ToType& to_nonconstref(FromType& x) {-  return reinterpret_cast<ToType&>(x);-}-- #define CHECKPROTECT(x,y) IS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)  #define TYPECASTMETHOD(cname,mname,oname) \@@ -45,5 +22,4 @@ TFILE_DEF_VIRT(TFile)  TFILE_DEF_NONVIRT(TFile)- 
csrc/HROOTIOTFile.h view
@@ -1,23 +1,22 @@ #ifdef __cplusplus extern "C" { -#endif +#endif  #ifndef __HROOT_IO__TFile__ #define __HROOT_IO__TFile__  #include "HROOT-ioType.h"- #include "HROOTIOTDirectoryFile.h" #include "HROOTCoreTDirectory.h" #include "HROOTCoreTNamed.h" #include "HROOTCoreTObject.h" #include "HROOTCoreDeletable.h" -#undef TFILE_DECL_VIRT+#undef TFILE_DECL_VIRT  #define TFILE_DECL_VIRT(Type) \  -#undef TFILE_DECL_NONVIRT+#undef TFILE_DECL_NONVIRT  #define TFILE_DECL_NONVIRT(Type) \ Type ## _p Type ## _newTFile ( const char* fname, const char* option, const char* ftitle, int compress ) @@ -51,3 +50,4 @@ #ifdef __cplusplus } #endif+
src/HROOT/IO.hs view
@@ -1,6 +1,6 @@ module HROOT.IO (-module HROOT.IO.TDirectoryFile-, module HROOT.IO.TFile +  module HROOT.IO.TDirectoryFile+, module HROOT.IO.TFile ) where  import HROOT.IO.TDirectoryFile
src/HROOT/IO/TDirectoryFile.hs view
@@ -1,15 +1,7 @@ module HROOT.IO.TDirectoryFile-  (-    TDirectoryFile(..)-  , ITDirectoryFile-  , upcastTDirectoryFile-  , downcastTDirectoryFile-- -  ) where-+       (TDirectoryFile(..), ITDirectoryFile, upcastTDirectoryFile,+        downcastTDirectoryFile)+       where import HROOT.IO.TDirectoryFile.RawType import HROOT.IO.TDirectoryFile.Interface import HROOT.IO.TDirectoryFile.Implementation--
src/HROOT/IO/TDirectoryFile/Cast.hs view
@@ -1,22 +1,18 @@-{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies, -             MultiParamTypeClasses, OverlappingInstances, IncoherentInstances #-}-+{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies,+  MultiParamTypeClasses, OverlappingInstances, IncoherentInstances+  #-} module HROOT.IO.TDirectoryFile.Cast where-- import Foreign.Ptr-import Foreign.ForeignPtr (castForeignPtr, newForeignPtr_)-import Foreign.ForeignPtr.Unsafe import FFICXX.Runtime.Cast import System.IO.Unsafe- import HROOT.IO.TDirectoryFile.RawType import HROOT.IO.TDirectoryFile.Interface -instance (ITDirectoryFile a, FPtr a) => Castable a (Ptr RawTDirectoryFile) where-  cast = unsafeForeignPtrToPtr . castForeignPtr . get_fptr-  uncast = cast_fptr_to_obj . castForeignPtr . unsafePerformIO . newForeignPtr_ +instance (ITDirectoryFile a, FPtr a) => Castable a+         (Ptr RawTDirectoryFile) where+        cast x f = f (castPtr (get_fptr x))+        uncast x f = f (cast_fptr_to_obj (castPtr x))  instance Castable TDirectoryFile (Ptr RawTDirectoryFile) where-  cast = unsafeForeignPtrToPtr . castForeignPtr . get_fptr-  uncast = cast_fptr_to_obj . castForeignPtr . unsafePerformIO . newForeignPtr_ +        cast x f = f (castPtr (get_fptr x))+        uncast x f = f (cast_fptr_to_obj (castPtr x))
src/HROOT/IO/TDirectoryFile/FFI.hsc view
@@ -1,75 +1,90 @@ {-# LANGUAGE ForeignFunctionInterface #-}---- module HROOT.Class.FFI where- module HROOT.IO.TDirectoryFile.FFI where---import Foreign.C            +import Foreign.C import Foreign.Ptr---- import HROOT.Class.Interface---- #include ""- import HROOT.IO.TDirectoryFile.RawType import HROOT.Core.TObject.RawType import HROOT.Core.TKey.RawType import HROOT.Core.TClass.RawType -#include "HROOTIOTDirectoryFile.h"--foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_Append" c_tdirectoryfile_append -  :: (Ptr RawTDirectoryFile) -> (Ptr RawTObject) -> CInt -> IO ()--foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_addD" c_tdirectoryfile_addd -  :: (Ptr RawTDirectoryFile) -> (Ptr RawTObject) -> CInt -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_Append"+               c_tdirectoryfile_append ::+               Ptr RawTDirectoryFile -> Ptr RawTObject -> CInt -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_AppendKey" c_tdirectoryfile_appendkey -  :: (Ptr RawTDirectoryFile) -> (Ptr RawTKey) -> IO CInt+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_addD" c_tdirectoryfile_addd+               :: Ptr RawTDirectoryFile -> Ptr RawTObject -> CInt -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_Close" c_tdirectoryfile_close -  :: (Ptr RawTDirectoryFile) -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_AppendKey"+               c_tdirectoryfile_appendkey ::+               Ptr RawTDirectoryFile -> Ptr RawTKey -> IO CInt -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_Get" c_tdirectoryfile_get -  :: (Ptr RawTDirectoryFile) -> CString -> IO (Ptr RawTObject)+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_Close"+               c_tdirectoryfile_close :: Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_cd_TDirectory" c_tdirectoryfile_cd_tdirectory -  :: (Ptr RawTDirectoryFile) -> CString -> IO CInt+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_Get" c_tdirectoryfile_get+               :: Ptr RawTDirectoryFile -> CString -> IO (Ptr RawTObject) -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_SetName" c_tdirectoryfile_setname -  :: (Ptr RawTDirectoryFile) -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_cd_TDirectory"+               c_tdirectoryfile_cd_tdirectory ::+               Ptr RawTDirectoryFile -> CString -> IO CInt -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_SetNameTitle" c_tdirectoryfile_setnametitle -  :: (Ptr RawTDirectoryFile) -> CString -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_SetName"+               c_tdirectoryfile_setname ::+               Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_SetTitle" c_tdirectoryfile_settitle -  :: (Ptr RawTDirectoryFile) -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_SetNameTitle"+               c_tdirectoryfile_setnametitle ::+               Ptr RawTDirectoryFile -> CString -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_Draw" c_tdirectoryfile_draw -  :: (Ptr RawTDirectoryFile) -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_SetTitle"+               c_tdirectoryfile_settitle ::+               Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_FindObject" c_tdirectoryfile_findobject -  :: (Ptr RawTDirectoryFile) -> CString -> IO (Ptr RawTObject)+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_Draw" c_tdirectoryfile_draw+               :: Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_GetName" c_tdirectoryfile_getname -  :: (Ptr RawTDirectoryFile) -> IO CString+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_FindObject"+               c_tdirectoryfile_findobject ::+               Ptr RawTDirectoryFile -> CString -> IO (Ptr RawTObject) -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_IsA" c_tdirectoryfile_isa -  :: (Ptr RawTDirectoryFile) -> IO (Ptr RawTClass)+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_GetName"+               c_tdirectoryfile_getname :: Ptr RawTDirectoryFile -> IO CString -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_Paint" c_tdirectoryfile_paint -  :: (Ptr RawTDirectoryFile) -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_IsA" c_tdirectoryfile_isa+               :: Ptr RawTDirectoryFile -> IO (Ptr RawTClass) -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_printObj" c_tdirectoryfile_printobj -  :: (Ptr RawTDirectoryFile) -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_Paint"+               c_tdirectoryfile_paint :: Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_SaveAs" c_tdirectoryfile_saveas -  :: (Ptr RawTDirectoryFile) -> CString -> CString -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_printObj"+               c_tdirectoryfile_printobj ::+               Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_Write" c_tdirectoryfile_write -  :: (Ptr RawTDirectoryFile) -> CString -> CInt -> CInt -> IO CInt+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_SaveAs"+               c_tdirectoryfile_saveas ::+               Ptr RawTDirectoryFile -> CString -> CString -> IO () -foreign import ccall "HROOTIOTDirectoryFile.h TDirectoryFile_delete" c_tdirectoryfile_delete -  :: (Ptr RawTDirectoryFile) -> IO ()+foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_Write"+               c_tdirectoryfile_write ::+               Ptr RawTDirectoryFile -> CString -> CInt -> CInt -> IO CInt +foreign import ccall safe+               "HROOTIOTDirectoryFile.h TDirectoryFile_delete"+               c_tdirectoryfile_delete :: Ptr RawTDirectoryFile -> IO ()
src/HROOT/IO/TDirectoryFile/Implementation.hs view
@@ -1,12 +1,13 @@-{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, -             FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, -             OverlappingInstances, IncoherentInstances #-}-+{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,+  ForeignFunctionInterface, IncoherentInstances,+  MultiParamTypeClasses, OverlappingInstances, TypeFamilies,+  TypeSynonymInstances #-} module HROOT.IO.TDirectoryFile.Implementation where-- import FFICXX.Runtime.Cast-+import Data.Word+import Foreign.C+import Foreign.Ptr+import System.IO.Unsafe import HROOT.IO.TDirectoryFile.RawType import HROOT.IO.TDirectoryFile.FFI import HROOT.IO.TDirectoryFile.Interface@@ -30,70 +31,30 @@ import HROOT.Core.Deletable.Cast import HROOT.Core.Deletable.Interface -import Data.Word-import Foreign.C-import Foreign.Ptr -import Foreign.ForeignPtr--import System.IO.Unsafe-+instance ITDirectoryFile TDirectoryFile -instance ITDirectoryFile TDirectoryFile where instance ITDirectory TDirectoryFile where-  append = xform2 c_tdirectoryfile_append-  addD = xform2 c_tdirectoryfile_addd-  appendKey = xform1 c_tdirectoryfile_appendkey-  close = xform1 c_tdirectoryfile_close-  get = xform1 c_tdirectoryfile_get-  cd_TDirectory = xform1 c_tdirectoryfile_cd_tdirectory-instance ITNamed TDirectoryFile where-  setName = xform1 c_tdirectoryfile_setname-  setNameTitle = xform2 c_tdirectoryfile_setnametitle-  setTitle = xform1 c_tdirectoryfile_settitle-instance ITObject TDirectoryFile where-  draw = xform1 c_tdirectoryfile_draw-  findObject = xform1 c_tdirectoryfile_findobject-  getName = xform0 c_tdirectoryfile_getname-  isA = xform0 c_tdirectoryfile_isa-  paint = xform1 c_tdirectoryfile_paint-  printObj = xform1 c_tdirectoryfile_printobj-  saveAs = xform2 c_tdirectoryfile_saveas-  write = xform3 c_tdirectoryfile_write-instance IDeletable TDirectoryFile where-  delete = xform0 c_tdirectoryfile_delete--instance ITDirectoryFile (Exist TDirectoryFile) where--instance ITDirectory (Exist TDirectoryFile) where-  append (ETDirectoryFile x) = append x-  addD (ETDirectoryFile x) = addD x-  appendKey (ETDirectoryFile x) = appendKey x-  close (ETDirectoryFile x) = close x-  get (ETDirectoryFile x) = get x-  cd_TDirectory (ETDirectoryFile x) = cd_TDirectory x-instance ITNamed (Exist TDirectoryFile) where-  setName (ETDirectoryFile x) = setName x-  setNameTitle (ETDirectoryFile x) = setNameTitle x-  setTitle (ETDirectoryFile x) = setTitle x-instance ITObject (Exist TDirectoryFile) where-  draw (ETDirectoryFile x) = draw x-  findObject (ETDirectoryFile x) = findObject x-  getName (ETDirectoryFile x) = getName x-  isA (ETDirectoryFile x) = isA x-  paint (ETDirectoryFile x) = paint x-  printObj (ETDirectoryFile x) = printObj x-  saveAs (ETDirectoryFile x) = saveAs x-  write (ETDirectoryFile x) = write x-instance IDeletable (Exist TDirectoryFile) where-  delete (ETDirectoryFile x) = delete x----+        append = xform2 c_tdirectoryfile_append+        addD = xform2 c_tdirectoryfile_addd+        appendKey = xform1 c_tdirectoryfile_appendkey+        close = xform1 c_tdirectoryfile_close+        get = xform1 c_tdirectoryfile_get+        cd_TDirectory = xform1 c_tdirectoryfile_cd_tdirectory +instance ITNamed TDirectoryFile where+        setName = xform1 c_tdirectoryfile_setname+        setNameTitle = xform2 c_tdirectoryfile_setnametitle+        setTitle = xform1 c_tdirectoryfile_settitle +instance ITObject TDirectoryFile where+        draw = xform1 c_tdirectoryfile_draw+        findObject = xform1 c_tdirectoryfile_findobject+        getName = xform0 c_tdirectoryfile_getname+        isA = xform0 c_tdirectoryfile_isa+        paint = xform1 c_tdirectoryfile_paint+        printObj = xform1 c_tdirectoryfile_printobj+        saveAs = xform2 c_tdirectoryfile_saveas+        write = xform3 c_tdirectoryfile_write -instance FPtr (Exist TDirectoryFile) where-  type Raw (Exist TDirectoryFile) = RawTDirectoryFile-  get_fptr (ETDirectoryFile obj) = castForeignPtr (get_fptr obj)-  cast_fptr_to_obj fptr = ETDirectoryFile (cast_fptr_to_obj (fptr :: ForeignPtr RawTDirectoryFile) :: TDirectoryFile)+instance IDeletable TDirectoryFile where+        delete = xform0 c_tdirectoryfile_delete
src/HROOT/IO/TDirectoryFile/Interface.hs view
@@ -1,36 +1,27 @@-{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, -             FlexibleInstances, TypeSynonymInstances, -             EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}---- module HROOT.Class.Interface where-+{-# LANGUAGE EmptyDataDecls, ExistentialQuantification,+  FlexibleContexts, FlexibleInstances, ForeignFunctionInterface,+  MultiParamTypeClasses, ScopedTypeVariables, TypeFamilies,+  TypeSynonymInstances #-} module HROOT.IO.TDirectoryFile.Interface where-- import Data.Word import Foreign.C import Foreign.Ptr-import Foreign.ForeignPtr import FFICXX.Runtime.Cast- import HROOT.IO.TDirectoryFile.RawType- import HROOT.Core.TDirectory.Interface----- ============ ---- ---class (ITDirectory a) => ITDirectoryFile a where--instance Existable TDirectoryFile where-  data Exist TDirectoryFile = forall a. (FPtr a, ITDirectoryFile a) => ETDirectoryFile a+class ITDirectory a => ITDirectoryFile a -upcastTDirectoryFile :: (FPtr a, ITDirectoryFile a) => a -> TDirectoryFile-upcastTDirectoryFile h = let fh = get_fptr h-                             fh2 :: ForeignPtr RawTDirectoryFile = castForeignPtr fh-                         in cast_fptr_to_obj fh2+upcastTDirectoryFile ::+                     forall a . (FPtr a, ITDirectoryFile a) => a -> TDirectoryFile+upcastTDirectoryFile h+  = let fh = get_fptr h+        fh2 :: Ptr RawTDirectoryFile = castPtr fh+      in cast_fptr_to_obj fh2 -downcastTDirectoryFile :: (FPtr a, ITDirectoryFile a) => TDirectoryFile -> a -downcastTDirectoryFile h = let fh = get_fptr h-                               fh2 = castForeignPtr fh-                           in cast_fptr_to_obj fh2+downcastTDirectoryFile ::+                       forall a . (FPtr a, ITDirectoryFile a) => TDirectoryFile -> a+downcastTDirectoryFile h+  = let fh = get_fptr h+        fh2 = castPtr fh+      in cast_fptr_to_obj fh2
src/HROOT/IO/TDirectoryFile/RawType.hs view
@@ -1,16 +1,16 @@-{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, -             FlexibleInstances, TypeSynonymInstances, -             EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}-+{-# LANGUAGE ForeignFunctionInterface, TypeFamilies,+  MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances,+  EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-} module HROOT.IO.TDirectoryFile.RawType where+import Foreign.Ptr+import FFICXX.Runtime.Cast +data RawTDirectoryFile -import Foreign.ForeignPtr-import FFICXX.Runtime.Cast  +newtype TDirectoryFile = TDirectoryFile (Ptr RawTDirectoryFile)+                       deriving (Eq, Ord, Show) -data RawTDirectoryFile-newtype TDirectoryFile = TDirectoryFile (ForeignPtr RawTDirectoryFile) deriving (Eq, Ord, Show) instance FPtr TDirectoryFile where-   type Raw TDirectoryFile = RawTDirectoryFile-   get_fptr (TDirectoryFile fptr) = fptr-   cast_fptr_to_obj = TDirectoryFile+        type Raw TDirectoryFile = RawTDirectoryFile+        get_fptr (TDirectoryFile ptr) = ptr+        cast_fptr_to_obj = TDirectoryFile
src/HROOT/IO/TFile.hs view
@@ -1,15 +1,5 @@ module HROOT.IO.TFile-  (-    TFile(..)-  , ITFile-  , upcastTFile-  , downcastTFile-  , newTFile- -  ) where-+       (TFile(..), ITFile, upcastTFile, downcastTFile, newTFile) where import HROOT.IO.TFile.RawType import HROOT.IO.TFile.Interface import HROOT.IO.TFile.Implementation--
src/HROOT/IO/TFile/Cast.hs view
@@ -1,22 +1,17 @@-{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies, -             MultiParamTypeClasses, OverlappingInstances, IncoherentInstances #-}-+{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies,+  MultiParamTypeClasses, OverlappingInstances, IncoherentInstances+  #-} module HROOT.IO.TFile.Cast where-- import Foreign.Ptr-import Foreign.ForeignPtr (castForeignPtr, newForeignPtr_)-import Foreign.ForeignPtr.Unsafe import FFICXX.Runtime.Cast import System.IO.Unsafe- import HROOT.IO.TFile.RawType import HROOT.IO.TFile.Interface  instance (ITFile a, FPtr a) => Castable a (Ptr RawTFile) where-  cast = unsafeForeignPtrToPtr . castForeignPtr . get_fptr-  uncast = cast_fptr_to_obj . castForeignPtr . unsafePerformIO . newForeignPtr_ +        cast x f = f (castPtr (get_fptr x))+        uncast x f = f (cast_fptr_to_obj (castPtr x))  instance Castable TFile (Ptr RawTFile) where-  cast = unsafeForeignPtrToPtr . castForeignPtr . get_fptr-  uncast = cast_fptr_to_obj . castForeignPtr . unsafePerformIO . newForeignPtr_ +        cast x f = f (castPtr (get_fptr x))+        uncast x f = f (cast_fptr_to_obj (castPtr x))
src/HROOT/IO/TFile/FFI.hsc view
@@ -1,78 +1,67 @@ {-# LANGUAGE ForeignFunctionInterface #-}---- module HROOT.Class.FFI where- module HROOT.IO.TFile.FFI where---import Foreign.C            +import Foreign.C import Foreign.Ptr---- import HROOT.Class.Interface---- #include ""- import HROOT.IO.TFile.RawType import HROOT.Core.TObject.RawType import HROOT.Core.TKey.RawType import HROOT.Core.TClass.RawType -#include "HROOTIOTFile.h"--foreign import ccall "HROOTIOTFile.h TFile_Append" c_tfile_append -  :: (Ptr RawTFile) -> (Ptr RawTObject) -> CInt -> IO ()--foreign import ccall "HROOTIOTFile.h TFile_addD" c_tfile_addd -  :: (Ptr RawTFile) -> (Ptr RawTObject) -> CInt -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_Append"+               c_tfile_append :: Ptr RawTFile -> Ptr RawTObject -> CInt -> IO () -foreign import ccall "HROOTIOTFile.h TFile_AppendKey" c_tfile_appendkey -  :: (Ptr RawTFile) -> (Ptr RawTKey) -> IO CInt+foreign import ccall safe "HROOTIOTFile.h TFile_addD" c_tfile_addd+               :: Ptr RawTFile -> Ptr RawTObject -> CInt -> IO () -foreign import ccall "HROOTIOTFile.h TFile_Close" c_tfile_close -  :: (Ptr RawTFile) -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_AppendKey"+               c_tfile_appendkey :: Ptr RawTFile -> Ptr RawTKey -> IO CInt -foreign import ccall "HROOTIOTFile.h TFile_Get" c_tfile_get -  :: (Ptr RawTFile) -> CString -> IO (Ptr RawTObject)+foreign import ccall safe "HROOTIOTFile.h TFile_Close"+               c_tfile_close :: Ptr RawTFile -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_cd_TDirectory" c_tfile_cd_tdirectory -  :: (Ptr RawTFile) -> CString -> IO CInt+foreign import ccall safe "HROOTIOTFile.h TFile_Get" c_tfile_get ::+               Ptr RawTFile -> CString -> IO (Ptr RawTObject) -foreign import ccall "HROOTIOTFile.h TFile_SetName" c_tfile_setname -  :: (Ptr RawTFile) -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_cd_TDirectory"+               c_tfile_cd_tdirectory :: Ptr RawTFile -> CString -> IO CInt -foreign import ccall "HROOTIOTFile.h TFile_SetNameTitle" c_tfile_setnametitle -  :: (Ptr RawTFile) -> CString -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_SetName"+               c_tfile_setname :: Ptr RawTFile -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_SetTitle" c_tfile_settitle -  :: (Ptr RawTFile) -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_SetNameTitle"+               c_tfile_setnametitle :: Ptr RawTFile -> CString -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_Draw" c_tfile_draw -  :: (Ptr RawTFile) -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_SetTitle"+               c_tfile_settitle :: Ptr RawTFile -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_FindObject" c_tfile_findobject -  :: (Ptr RawTFile) -> CString -> IO (Ptr RawTObject)+foreign import ccall safe "HROOTIOTFile.h TFile_Draw" c_tfile_draw+               :: Ptr RawTFile -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_GetName" c_tfile_getname -  :: (Ptr RawTFile) -> IO CString+foreign import ccall safe "HROOTIOTFile.h TFile_FindObject"+               c_tfile_findobject ::+               Ptr RawTFile -> CString -> IO (Ptr RawTObject) -foreign import ccall "HROOTIOTFile.h TFile_IsA" c_tfile_isa -  :: (Ptr RawTFile) -> IO (Ptr RawTClass)+foreign import ccall safe "HROOTIOTFile.h TFile_GetName"+               c_tfile_getname :: Ptr RawTFile -> IO CString -foreign import ccall "HROOTIOTFile.h TFile_Paint" c_tfile_paint -  :: (Ptr RawTFile) -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_IsA" c_tfile_isa ::+               Ptr RawTFile -> IO (Ptr RawTClass) -foreign import ccall "HROOTIOTFile.h TFile_printObj" c_tfile_printobj -  :: (Ptr RawTFile) -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_Paint"+               c_tfile_paint :: Ptr RawTFile -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_SaveAs" c_tfile_saveas -  :: (Ptr RawTFile) -> CString -> CString -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_printObj"+               c_tfile_printobj :: Ptr RawTFile -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_Write" c_tfile_write -  :: (Ptr RawTFile) -> CString -> CInt -> CInt -> IO CInt+foreign import ccall safe "HROOTIOTFile.h TFile_SaveAs"+               c_tfile_saveas :: Ptr RawTFile -> CString -> CString -> IO () -foreign import ccall "HROOTIOTFile.h TFile_delete" c_tfile_delete -  :: (Ptr RawTFile) -> IO ()+foreign import ccall safe "HROOTIOTFile.h TFile_Write"+               c_tfile_write :: Ptr RawTFile -> CString -> CInt -> CInt -> IO CInt -foreign import ccall "HROOTIOTFile.h TFile_newTFile" c_tfile_newtfile -  :: CString -> CString -> CString -> CInt -> IO (Ptr RawTFile)+foreign import ccall safe "HROOTIOTFile.h TFile_delete"+               c_tfile_delete :: Ptr RawTFile -> IO () +foreign import ccall safe "HROOTIOTFile.h TFile_newTFile"+               c_tfile_newtfile ::+               CString -> CString -> CString -> CInt -> IO (Ptr RawTFile)
src/HROOT/IO/TFile/Implementation.hs view
@@ -1,12 +1,13 @@-{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, -             FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, -             OverlappingInstances, IncoherentInstances #-}-+{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,+  ForeignFunctionInterface, IncoherentInstances,+  MultiParamTypeClasses, OverlappingInstances, TypeFamilies,+  TypeSynonymInstances #-} module HROOT.IO.TFile.Implementation where-- import FFICXX.Runtime.Cast-+import Data.Word+import Foreign.C+import Foreign.Ptr+import System.IO.Unsafe import HROOT.IO.TFile.RawType import HROOT.IO.TFile.FFI import HROOT.IO.TFile.Interface@@ -33,75 +34,37 @@ import HROOT.Core.Deletable.Cast import HROOT.Core.Deletable.Interface -import Data.Word-import Foreign.C-import Foreign.Ptr -import Foreign.ForeignPtr--import System.IO.Unsafe+instance ITFile TFile +instance ITDirectoryFile TFile -instance ITFile TFile where-instance ITDirectoryFile TFile where instance ITDirectory TFile where-  append = xform2 c_tfile_append-  addD = xform2 c_tfile_addd-  appendKey = xform1 c_tfile_appendkey-  close = xform1 c_tfile_close-  get = xform1 c_tfile_get-  cd_TDirectory = xform1 c_tfile_cd_tdirectory-instance ITNamed TFile where-  setName = xform1 c_tfile_setname-  setNameTitle = xform2 c_tfile_setnametitle-  setTitle = xform1 c_tfile_settitle-instance ITObject TFile where-  draw = xform1 c_tfile_draw-  findObject = xform1 c_tfile_findobject-  getName = xform0 c_tfile_getname-  isA = xform0 c_tfile_isa-  paint = xform1 c_tfile_paint-  printObj = xform1 c_tfile_printobj-  saveAs = xform2 c_tfile_saveas-  write = xform3 c_tfile_write-instance IDeletable TFile where-  delete = xform0 c_tfile_delete--instance ITFile (Exist TFile) where+        append = xform2 c_tfile_append+        addD = xform2 c_tfile_addd+        appendKey = xform1 c_tfile_appendkey+        close = xform1 c_tfile_close+        get = xform1 c_tfile_get+        cd_TDirectory = xform1 c_tfile_cd_tdirectory -instance ITDirectoryFile (Exist TFile) where+instance ITNamed TFile where+        setName = xform1 c_tfile_setname+        setNameTitle = xform2 c_tfile_setnametitle+        setTitle = xform1 c_tfile_settitle -instance ITDirectory (Exist TFile) where-  append (ETFile x) = append x-  addD (ETFile x) = addD x-  appendKey (ETFile x) = appendKey x-  close (ETFile x) = close x-  get (ETFile x) = get x-  cd_TDirectory (ETFile x) = cd_TDirectory x-instance ITNamed (Exist TFile) where-  setName (ETFile x) = setName x-  setNameTitle (ETFile x) = setNameTitle x-  setTitle (ETFile x) = setTitle x-instance ITObject (Exist TFile) where-  draw (ETFile x) = draw x-  findObject (ETFile x) = findObject x-  getName (ETFile x) = getName x-  isA (ETFile x) = isA x-  paint (ETFile x) = paint x-  printObj (ETFile x) = printObj x-  saveAs (ETFile x) = saveAs x-  write (ETFile x) = write x-instance IDeletable (Exist TFile) where-  delete (ETFile x) = delete x+instance ITObject TFile where+        draw = xform1 c_tfile_draw+        findObject = xform1 c_tfile_findobject+        getName = xform0 c_tfile_getname+        isA = xform0 c_tfile_isa+        paint = xform1 c_tfile_paint+        printObj = xform1 c_tfile_printobj+        saveAs = xform2 c_tfile_saveas+        write = xform3 c_tfile_write +instance IDeletable TFile where+        delete = xform0 c_tfile_delete -newTFile :: CString -> CString -> CString -> CInt -> IO TFile+newTFile ::+           (Castable c2 CString, Castable c1 CString, Castable c0 CString) =>+           c0 -> c1 -> c2 -> CInt -> IO TFile newTFile = xform3 c_tfile_newtfile------instance FPtr (Exist TFile) where-  type Raw (Exist TFile) = RawTFile-  get_fptr (ETFile obj) = castForeignPtr (get_fptr obj)-  cast_fptr_to_obj fptr = ETFile (cast_fptr_to_obj (fptr :: ForeignPtr RawTFile) :: TFile)
src/HROOT/IO/TFile/Interface.hs view
@@ -1,36 +1,25 @@-{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, -             FlexibleInstances, TypeSynonymInstances, -             EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}---- module HROOT.Class.Interface where-+{-# LANGUAGE EmptyDataDecls, ExistentialQuantification,+  FlexibleContexts, FlexibleInstances, ForeignFunctionInterface,+  MultiParamTypeClasses, ScopedTypeVariables, TypeFamilies,+  TypeSynonymInstances #-} module HROOT.IO.TFile.Interface where-- import Data.Word import Foreign.C import Foreign.Ptr-import Foreign.ForeignPtr import FFICXX.Runtime.Cast- import HROOT.IO.TFile.RawType- import HROOT.IO.TDirectoryFile.Interface----- ============ ---- ---class (ITDirectoryFile a) => ITFile a where--instance Existable TFile where-  data Exist TFile = forall a. (FPtr a, ITFile a) => ETFile a+class ITDirectoryFile a => ITFile a -upcastTFile :: (FPtr a, ITFile a) => a -> TFile-upcastTFile h = let fh = get_fptr h-                    fh2 :: ForeignPtr RawTFile = castForeignPtr fh-                in cast_fptr_to_obj fh2+upcastTFile :: forall a . (FPtr a, ITFile a) => a -> TFile+upcastTFile h+  = let fh = get_fptr h+        fh2 :: Ptr RawTFile = castPtr fh+      in cast_fptr_to_obj fh2 -downcastTFile :: (FPtr a, ITFile a) => TFile -> a -downcastTFile h = let fh = get_fptr h-                      fh2 = castForeignPtr fh-                  in cast_fptr_to_obj fh2+downcastTFile :: forall a . (FPtr a, ITFile a) => TFile -> a+downcastTFile h+  = let fh = get_fptr h+        fh2 = castPtr fh+      in cast_fptr_to_obj fh2
src/HROOT/IO/TFile/RawType.hs view
@@ -1,16 +1,16 @@-{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, -             FlexibleInstances, TypeSynonymInstances, -             EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}-+{-# LANGUAGE ForeignFunctionInterface, TypeFamilies,+  MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances,+  EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-} module HROOT.IO.TFile.RawType where+import Foreign.Ptr+import FFICXX.Runtime.Cast +data RawTFile -import Foreign.ForeignPtr-import FFICXX.Runtime.Cast  +newtype TFile = TFile (Ptr RawTFile)+              deriving (Eq, Ord, Show) -data RawTFile-newtype TFile = TFile (ForeignPtr RawTFile) deriving (Eq, Ord, Show) instance FPtr TFile where-   type Raw TFile = RawTFile-   get_fptr (TFile fptr) = fptr-   cast_fptr_to_obj = TFile+        type Raw TFile = RawTFile+        get_fptr (TFile ptr) = ptr+        cast_fptr_to_obj = TFile