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 +0/−39
- Config.hs +0/−85
- HROOT-io.cabal +16/−20
- csrc/HROOT-ioType.h +3/−0
- csrc/HROOTIOTDirectoryFile.cpp +0/−24
- csrc/HROOTIOTDirectoryFile.h +4/−4
- csrc/HROOTIOTFile.cpp +0/−24
- csrc/HROOTIOTFile.h +4/−4
- src/HROOT/IO.hs +2/−2
- src/HROOT/IO/TDirectoryFile.hs +3/−11
- src/HROOT/IO/TDirectoryFile/Cast.hs +9/−13
- src/HROOT/IO/TDirectoryFile/FFI.hsc +65/−50
- src/HROOT/IO/TDirectoryFile/Implementation.hs +30/−69
- src/HROOT/IO/TDirectoryFile/Interface.hs +17/−26
- src/HROOT/IO/TDirectoryFile/RawType.hs +11/−11
- src/HROOT/IO/TFile.hs +1/−11
- src/HROOT/IO/TFile/Cast.hs +7/−12
- src/HROOT/IO/TFile/FFI.hsc +41/−52
- src/HROOT/IO/TFile/Implementation.hs +34/−71
- src/HROOT/IO/TFile/Interface.hs +15/−26
- src/HROOT/IO/TFile/RawType.hs +11/−11
− 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