packages feed

HROOT-io 0.9.0.1 → 0.10.0.1

raw patch · 32 files changed

+726/−313 lines, 32 filesdep +stdcxxdep ~HROOT-coredep ~fficxxdep ~fficxx-runtimesetup-changed

Dependencies added: stdcxx

Dependency ranges changed: HROOT-core, fficxx, fficxx-runtime

Files

+ CHANGES view
@@ -0,0 +1,60 @@+# Changelog for HROOT++## 0.10.0.1+- Use hackage-version of fficxx (#18)+- Generate docs in CI (#17)+- Update flake.nix with recent fficxx and ormolu format (#16)+- Update fficxx to support GHC 9.4 (#15)+- Add TMutex and test multithreading with GUI (#12)+- HROOT now uses common stdcxx (#11)+- idealized gas simulation (#10)+- Add TMarker and Range. Test 2D graphics using gas example (#9)+- HROOT generation and packing via nix (#8)+- Revive umbrella package generation (#7)+- Static files (Config.hs, Setup.lhs) and custom-setup dependency (#6)+- Modernize HROOT with fficxx 0.5.1 (#5)++## 0.9.0.1++## 0.9+- HROOT-tree+- HROOT only support ROOT > 6++## 0.8+- separate packages into HROOT-core, HROOT-hist, HROOT-io, HROOT-math, HROOT-graf and HROOT is now an umbrella package++## 0.7+- separate all class interfaces and implementation in different modules+- overhaul Existential++## 0.7.1+- support for static methods+- add TROOT++## 0.6.9+- implement almost all class methods of TLine, TAttLine, TAttMarker, TAttText and TAttPad++## 0.6.8+- implement almost all class methods of TH2, TH3, TFormula, TF1 and TGraph++## 0.6.7+- implement almost all TH1 class methods++## 0.6.6+- do not need OverlappingInstances, IncoherentInstances, UndecidableInstances++## 0.6.4+- add many TH2 class methods++## 0.6.3+- Implement Existential Types++## 0.6+- implement Deletable. delete method for every object+- refactor HROOT generated file names (Interface.hs, Implementation.hs, FFI.hs)++## 0.5.1+- support for delete++## 0.5.0+- initial preview release
− 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,60 +1,79 @@-Name:                HROOT-io-Version:     0.9.0.1-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>-Category:       Graphics, Statistics, Math, Numerical-Tested-with:    GHC >= 7.6-Build-Type:  Custom-cabal-version:  >=1.10+Cabal-version: 3.0+Name:          HROOT-io+Version:       0.10.0.1+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:      https://wavewave.github.io/HROOT+license:       LGPL-2.1-or-later+license-file:  LICENSE+Author:        Ian-Woo Kim+Maintainer:    Ian-Woo Kim <ianwookim@gmail.com>+Category:      Graphics, Statistics, Math, Numerical+Tested-with:   GHC == 9.0.2 || == 9.2.4 || == 9.4.2  Extra-source-files:-                       Config.hs-                       csrc/HROOTIOTDirectoryFile.h-                       csrc/HROOTIOTFile.h-                       csrc/HROOTIOTDirectoryFile.cpp-                       csrc/HROOTIOTFile.cpp--+  CHANGES+  csrc/HROOTIOTDirectoryFile.h+  csrc/HROOTIOTFile.h+  csrc/HROOTIOTMemFile.h+  csrc/HROOTIOTDirectoryFile.cpp+  csrc/HROOTIOTFile.cpp+  csrc/HROOTIOTMemFile.cpp+Build-Type: Custom+custom-setup+  setup-depends: Cabal < 4, base > 4 && < 5, process +Source-repository head+  type:     git+  location: https://github.com/wavewave/HROOT  Library   default-language: Haskell2010   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-  cc-options: -std=c++14-  Build-Depends:      base>4 && < 5, fficxx >= 0.3, fficxx-runtime >= 0.3, template-haskell,HROOT-core+  cxx-options: -std=c++17+  Build-Depends: base > 4 && < 5, fficxx >= 0.7, fficxx-runtime >= 0.7, template-haskell, stdcxx, HROOT-core == 0.10.0.1   Exposed-Modules:                        HROOT.IO+                       HROOT.IO.Ordinary+                       HROOT.IO.Template+                       HROOT.IO.TH                        HROOT.IO.TDirectoryFile                        HROOT.IO.TFile+                       HROOT.IO.TMemFile                        HROOT.IO.TDirectoryFile.RawType                        HROOT.IO.TFile.RawType+                       HROOT.IO.TMemFile.RawType                        HROOT.IO.TDirectoryFile.FFI                        HROOT.IO.TFile.FFI+                       HROOT.IO.TMemFile.FFI                        HROOT.IO.TDirectoryFile.Interface                        HROOT.IO.TFile.Interface+                       HROOT.IO.TMemFile.Interface                        HROOT.IO.TDirectoryFile.Cast                        HROOT.IO.TFile.Cast+                       HROOT.IO.TMemFile.Cast                        HROOT.IO.TDirectoryFile.Implementation                        HROOT.IO.TFile.Implementation+                       HROOT.IO.TMemFile.Implementation    Other-Modules:+                           extra-lib-dirs: -  extra-libraries:    stdc++ +  extra-libraries:       Include-dirs:       csrc +  pkgconfig-depends:    Install-includes:                        HROOT-ioType.h                        HROOTIOTDirectoryFile.h                        HROOTIOTFile.h+                       HROOTIOTMemFile.h -  C-sources:+  Cxx-sources:                        csrc/HROOTIOTDirectoryFile.cpp                        csrc/HROOTIOTFile.cpp-+                       csrc/HROOTIOTMemFile.cpp 
+ Setup.hs view
@@ -0,0 +1,27 @@+import Distribution.Simple+import Distribution.Simple.Setup+import Distribution.PackageDescription+import Distribution.Simple.LocalBuildInfo+import Config++myconfigHook = simpleUserHooks { confHook = hookfunction }++hookfunction x y = do+  binfo <- confHook simpleUserHooks x y+  r_pbi <- config binfo+  let pkg_descr = localPkgDescr binfo++  let newbinfo = case r_pbi of+                   Just pbi ->  binfo { localPkgDescr = updatePackageDescription pbi pkg_descr }+                   Nothing -> do+                     let r_lib = library pkg_descr+                     case r_lib of+                       Just lib ->+                         let binfo2 = libBuildInfo lib+                             newlib = lib { libBuildInfo = binfo2 { cSources = [] }}+                          in  binfo { localPkgDescr = pkg_descr { library = Just newlib }}+                       Nothing -> error "some library setting is wrong."+--   putStrLn (show (localPkgDescr newbinfo))+  return newbinfo++main = defaultMainWithHooks myconfigHook
− Setup.lhs
@@ -1,33 +0,0 @@-#! /usr/bin/env runhaskell-  -> import Distribution.Simple-> import Distribution.Simple.Setup-> import Distribution.PackageDescription-> import Distribution.Simple.LocalBuildInfo->-> import Config->-> myconfigHook = simpleUserHooks { confHook = hookfunction } ->-> hookfunction x y = do ->   binfo <- confHook simpleUserHooks x y ->   r_pbi <- config binfo->   let pkg_descr = localPkgDescr binfo->   ->   let newbinfo = case r_pbi of ->                    Just pbi ->  binfo { localPkgDescr = updatePackageDescription pbi pkg_descr }->                    Nothing -> do ->                      let r_lib = library pkg_descr ->                      case r_lib of->                        Just lib ->  ->                          let binfo2 = libBuildInfo lib->                              newlib = lib { libBuildInfo = binfo2 { cSources = [] }}  ->                          in  binfo { localPkgDescr = pkg_descr { library = Just newlib }}  ->                        Nothing -> error "some library setting is wrong." -> --   putStrLn (show (localPkgDescr newbinfo))->   return newbinfo->  ->-> main = defaultMainWithHooks myconfigHook->-
csrc/HROOT-ioType.h view
@@ -1,24 +1,16 @@+ #ifdef __cplusplus-extern "C" { +extern "C" { #endif -#ifndef __HROOT_IO__-#define __HROOT_IO__--// Opaque type definition for TDirectoryFile -typedef struct TDirectoryFile_tag TDirectoryFile_t; -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__+#pragma once +// Opaque type definition for $classname+typedef struct TDirectoryFile_tag TDirectoryFile_t;typedef TDirectoryFile_t * TDirectoryFile_p;typedef TDirectoryFile_t const* const_TDirectoryFile_p;+// Opaque type definition for $classname+typedef struct TFile_tag TFile_t;typedef TFile_t * TFile_p;typedef TFile_t const* const_TFile_p;+// Opaque type definition for $classname+typedef struct TMemFile_tag TMemFile_t;typedef TMemFile_t * TMemFile_p;typedef TMemFile_t const* const_TMemFile_p; #ifdef __cplusplus } #endif
csrc/HROOTIOTDirectoryFile.cpp view
@@ -1,24 +1,26 @@-#include <MacroPatternMatch.h>++#include "MacroPatternMatch.h"+ #include "HROOTCoreTDirectory.h"+ #include "TDirectoryFile.h"-#include "HROOTIOTDirectoryFile.h" +#include "HROOTIOTDirectoryFile.h" +using namespace ROOT; -#define CHECKPROTECT(x,y) IS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)+#define CHECKPROTECT(x,y) FXIS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)  #define TYPECASTMETHOD(cname,mname,oname) \-  IIF( CHECKPROTECT(cname,mname) ) ( \-  (to_nonconst<oname,cname ## _t>), \-  (to_nonconst<cname,cname ## _t>) )-+  FXIIF( CHECKPROTECT(cname,mname) ) ( \+  (from_nonconst_to_nonconst<oname,cname ## _t>), \+  (from_nonconst_to_nonconst<cname,cname ## _t>) )  TDIRECTORY_DEF_VIRT(TDirectoryFile) TNAMED_DEF_VIRT(TDirectoryFile) TOBJECT_DEF_VIRT(TDirectoryFile) DELETABLE_DEF_VIRT(TDirectoryFile)- TDIRECTORYFILE_DEF_VIRT(TDirectoryFile)- TDIRECTORYFILE_DEF_NONVIRT(TDirectoryFile)+TDIRECTORYFILE_DEF_ACCESSOR(TDirectoryFile) 
csrc/HROOTIOTDirectoryFile.h view
@@ -1,46 +1,55 @@+ #ifdef __cplusplus-extern "C" { +extern "C" { #endif -#ifndef __HROOT_IO__TDirectoryFile__-#define __HROOT_IO__TDirectoryFile__+#pragma once + #include "HROOT-ioType.h"+ #include "HROOTCoreTDirectory.h"+ #include "HROOTCoreTNamed.h"+ #include "HROOTCoreTObject.h"-#include "HROOTCoreDeletable.h"++#include "STDDeletable.h"+ #include "HROOT-coreType.h" -#undef TDIRECTORYFILE_DECL_VIRT + #define TDIRECTORYFILE_DECL_VIRT(Type) \  -#undef TDIRECTORYFILE_DECL_NONVIRT + #define TDIRECTORYFILE_DECL_NONVIRT(Type) \  -#undef TDIRECTORYFILE_DEF_VIRT-#define TDIRECTORYFILE_DEF_VIRT(Type)\ +#define TDIRECTORYFILE_DECL_ACCESSOR(Type) \ -#undef TDIRECTORYFILE_DEF_NONVIRT-#define TDIRECTORYFILE_DEF_NONVIRT(Type)\  -TDIRECTORY_DECL_VIRT(TDirectoryFile);-TNAMED_DECL_VIRT(TDirectoryFile);-TOBJECT_DECL_VIRT(TDirectoryFile);-DELETABLE_DECL_VIRT(TDirectoryFile);+#define TDIRECTORYFILE_DEF_VIRT(Type) \  -TDIRECTORYFILE_DECL_VIRT(TDirectoryFile); +#define TDIRECTORYFILE_DEF_NONVIRT(Type) \ -TDIRECTORYFILE_DECL_NONVIRT(TDirectoryFile);  -#endif // __HROOT_IO__TDirectoryFile__+#define TDIRECTORYFILE_DEF_ACCESSOR(Type) \++++TDIRECTORY_DECL_VIRT(TDirectoryFile)+TNAMED_DECL_VIRT(TDirectoryFile)+TOBJECT_DECL_VIRT(TDirectoryFile)+DELETABLE_DECL_VIRT(TDirectoryFile)+TDIRECTORYFILE_DECL_VIRT(TDirectoryFile)+TDIRECTORYFILE_DECL_NONVIRT(TDirectoryFile)+TDIRECTORYFILE_DECL_ACCESSOR(TDirectoryFile)  #ifdef __cplusplus }
csrc/HROOTIOTFile.cpp view
@@ -1,25 +1,27 @@-#include <MacroPatternMatch.h>++#include "MacroPatternMatch.h"+ #include "HROOTIOTDirectoryFile.h"+ #include "TFile.h"-#include "HROOTIOTFile.h" +#include "HROOTIOTFile.h" +using namespace ROOT; -#define CHECKPROTECT(x,y) IS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)+#define CHECKPROTECT(x,y) FXIS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)  #define TYPECASTMETHOD(cname,mname,oname) \-  IIF( CHECKPROTECT(cname,mname) ) ( \-  (to_nonconst<oname,cname ## _t>), \-  (to_nonconst<cname,cname ## _t>) )-+  FXIIF( CHECKPROTECT(cname,mname) ) ( \+  (from_nonconst_to_nonconst<oname,cname ## _t>), \+  (from_nonconst_to_nonconst<cname,cname ## _t>) )  TDIRECTORYFILE_DEF_VIRT(TFile) TDIRECTORY_DEF_VIRT(TFile) TNAMED_DEF_VIRT(TFile) TOBJECT_DEF_VIRT(TFile) DELETABLE_DEF_VIRT(TFile)- TFILE_DEF_VIRT(TFile)- TFILE_DEF_NONVIRT(TFile)+TFILE_DEF_ACCESSOR(TFile) 
csrc/HROOTIOTFile.h view
@@ -1,51 +1,58 @@+ #ifdef __cplusplus-extern "C" { +extern "C" { #endif -#ifndef __HROOT_IO__TFile__-#define __HROOT_IO__TFile__+#pragma once + #include "HROOT-ioType.h"+ #include "HROOTIOTDirectoryFile.h"+ #include "HROOTCoreTDirectory.h"+ #include "HROOTCoreTNamed.h"+ #include "HROOTCoreTObject.h"-#include "HROOTCoreDeletable.h" -#undef TFILE_DECL_VIRT +#include "STDDeletable.h"++ #define TFILE_DECL_VIRT(Type) \  -#undef TFILE_DECL_NONVIRT + #define TFILE_DECL_NONVIRT(Type) \-Type ## _p Type ## _newTFile ( const char* fname, const char* option, const char* ftitle, int compress )+Type##_p Type##_newTFile ( const char* fname, const char* option, const char* ftitle, int compress ); -#undef TFILE_DEF_VIRT-#define TFILE_DEF_VIRT(Type)\ +#define TFILE_DECL_ACCESSOR(Type) \ -#undef TFILE_DEF_NONVIRT-#define TFILE_DEF_NONVIRT(Type)\-Type ## _p Type ## _newTFile ( const char* fname, const char* option, const char* ftitle, int compress )\-{\-Type * newp = new Type (fname, option, ftitle, compress); \-return to_nonconst<Type ## _t, Type >(newp);\-} -TDIRECTORYFILE_DECL_VIRT(TFile);-TDIRECTORY_DECL_VIRT(TFile);-TNAMED_DECL_VIRT(TFile);-TOBJECT_DECL_VIRT(TFile);-DELETABLE_DECL_VIRT(TFile); +#define TFILE_DEF_VIRT(Type) \ -TFILE_DECL_VIRT(TFile);  -TFILE_DECL_NONVIRT(TFile);+#define TFILE_DEF_NONVIRT(Type) \+Type##_p Type##_newTFile ( const char* fname, const char* option, const char* ftitle, int compress ) {\+Type* newp=new Type(fname, option, ftitle, compress);return from_nonconst_to_nonconst<Type##_t, Type>(newp);\+}  -#endif // __HROOT_IO__TFile__+#define TFILE_DEF_ACCESSOR(Type) \++++TDIRECTORYFILE_DECL_VIRT(TFile)+TDIRECTORY_DECL_VIRT(TFile)+TNAMED_DECL_VIRT(TFile)+TOBJECT_DECL_VIRT(TFile)+DELETABLE_DECL_VIRT(TFile)+TFILE_DECL_VIRT(TFile)+TFILE_DECL_NONVIRT(TFile)+TFILE_DECL_ACCESSOR(TFile)  #ifdef __cplusplus }
+ csrc/HROOTIOTMemFile.cpp view
@@ -0,0 +1,28 @@++#include "MacroPatternMatch.h"++#include "HROOTIOTFile.h"++#include "TMemFile.h"++#include "HROOTIOTMemFile.h"++using namespace ROOT;++#define CHECKPROTECT(x,y) FXIS_PAREN(IS_ ## x ## _ ## y ## _PROTECTED)++#define TYPECASTMETHOD(cname,mname,oname) \+  FXIIF( CHECKPROTECT(cname,mname) ) ( \+  (from_nonconst_to_nonconst<oname,cname ## _t>), \+  (from_nonconst_to_nonconst<cname,cname ## _t>) )++TFILE_DEF_VIRT(TMemFile)+TDIRECTORYFILE_DEF_VIRT(TMemFile)+TDIRECTORY_DEF_VIRT(TMemFile)+TNAMED_DEF_VIRT(TMemFile)+TOBJECT_DEF_VIRT(TMemFile)+DELETABLE_DEF_VIRT(TMemFile)+TMEMFILE_DEF_VIRT(TMemFile)+TMEMFILE_DEF_NONVIRT(TMemFile)+TMEMFILE_DEF_ACCESSOR(TMemFile)+
+ csrc/HROOTIOTMemFile.h view
@@ -0,0 +1,63 @@++#ifdef __cplusplus+extern "C" {+#endif++#pragma once+++#include "HROOT-ioType.h"++#include "HROOTIOTFile.h"++#include "HROOTIOTDirectoryFile.h"++#include "HROOTCoreTDirectory.h"++#include "HROOTCoreTNamed.h"++#include "HROOTCoreTObject.h"++#include "STDDeletable.h"+++#define TMEMFILE_DECL_VIRT(Type) \++++#define TMEMFILE_DECL_NONVIRT(Type) \+Type##_p Type##_newTMemFile ( const char* path, const char* option, const char* ftitle, int compress );+++#define TMEMFILE_DECL_ACCESSOR(Type) \++++#define TMEMFILE_DEF_VIRT(Type) \++++#define TMEMFILE_DEF_NONVIRT(Type) \+Type##_p Type##_newTMemFile ( const char* path, const char* option, const char* ftitle, int compress ) {\+Type* newp=new Type(path, option, ftitle, compress);return from_nonconst_to_nonconst<Type##_t, Type>(newp);\+}+++#define TMEMFILE_DEF_ACCESSOR(Type) \++++TFILE_DECL_VIRT(TMemFile)+TDIRECTORYFILE_DECL_VIRT(TMemFile)+TDIRECTORY_DECL_VIRT(TMemFile)+TNAMED_DECL_VIRT(TMemFile)+TOBJECT_DECL_VIRT(TMemFile)+DELETABLE_DECL_VIRT(TMemFile)+TMEMFILE_DECL_VIRT(TMemFile)+TMEMFILE_DECL_NONVIRT(TMemFile)+TMEMFILE_DECL_ACCESSOR(TMemFile)++#ifdef __cplusplus+}+#endif+
src/HROOT/IO.hs view
@@ -1,11 +1,13 @@-module HROOT.IO (-  module HROOT.IO.TDirectoryFile-, module HROOT.IO.TFile-) where-+{-# LANGUAGE FlexibleContexts, FlexibleInstances,+  ForeignFunctionInterface, InterruptibleFFI #-}+module HROOT.IO+       (module HROOT.IO.TDirectoryFile, module HROOT.IO.TFile,+        module HROOT.IO.TMemFile, module HROOT.IO.Ordinary,+        module HROOT.IO.Template, module HROOT.IO.TH)+       where import HROOT.IO.TDirectoryFile import HROOT.IO.TFile----+import HROOT.IO.TMemFile+import HROOT.IO.Template+import HROOT.IO.TH+import HROOT.IO.Ordinary
+ src/HROOT/IO/Ordinary.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE FlexibleContexts, FlexibleInstances,+  ForeignFunctionInterface, InterruptibleFFI #-}+module HROOT.IO.Ordinary () where+import Foreign.C+import Foreign.Ptr+import FFICXX.Runtime.Cast
src/HROOT/IO/TDirectoryFile/Cast.hs view
@@ -8,11 +8,13 @@ import HROOT.IO.TDirectoryFile.RawType import HROOT.IO.TDirectoryFile.Interface -instance (ITDirectoryFile a, FPtr a) => Castable a-         (Ptr RawTDirectoryFile) where+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+instance () => Castable (TDirectoryFile) (Ptr RawTDirectoryFile)+         where         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,90 +1,101 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI #-} module HROOT.IO.TDirectoryFile.FFI where+import Data.Word+import Data.Int import Foreign.C import Foreign.Ptr import HROOT.IO.TDirectoryFile.RawType+import HROOT.IO.TDirectoryFile.RawType import HROOT.Core.TObject.RawType import HROOT.Core.TKey.RawType import HROOT.Core.TClass.RawType -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_Append"                c_tdirectoryfile_append ::-               Ptr RawTDirectoryFile -> Ptr RawTObject -> CInt -> IO ()+               Ptr RawTDirectoryFile -> Ptr RawTObject -> CBool -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_addD" c_tdirectoryfile_addd-               :: Ptr RawTDirectoryFile -> Ptr RawTObject -> CInt -> IO ()+               :: Ptr RawTDirectoryFile -> Ptr RawTObject -> CBool -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_AppendKey"                c_tdirectoryfile_appendkey ::                Ptr RawTDirectoryFile -> Ptr RawTKey -> IO CInt -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_Close"                c_tdirectoryfile_close :: Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_Get" c_tdirectoryfile_get                :: Ptr RawTDirectoryFile -> CString -> IO (Ptr RawTObject) -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_cd_TDirectory"                c_tdirectoryfile_cd_tdirectory ::-               Ptr RawTDirectoryFile -> CString -> IO CInt+               Ptr RawTDirectoryFile -> CString -> IO CBool -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_SetName"                c_tdirectoryfile_setname ::                Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_SetNameTitle"                c_tdirectoryfile_setnametitle ::                Ptr RawTDirectoryFile -> CString -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_SetTitle"                c_tdirectoryfile_settitle ::                Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible+               "HROOTIOTDirectoryFile.h TDirectoryFile_Clear"+               c_tdirectoryfile_clear :: Ptr RawTDirectoryFile -> CString -> IO ()++foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_Draw" c_tdirectoryfile_draw                :: Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_FindObject"                c_tdirectoryfile_findobject ::                Ptr RawTDirectoryFile -> CString -> IO (Ptr RawTObject) -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_GetName"                c_tdirectoryfile_getname :: Ptr RawTDirectoryFile -> IO CString -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_IsA" c_tdirectoryfile_isa                :: Ptr RawTDirectoryFile -> IO (Ptr RawTClass) -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_Paint"                c_tdirectoryfile_paint :: Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_printObj"                c_tdirectoryfile_printobj ::                Ptr RawTDirectoryFile -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_SaveAs"                c_tdirectoryfile_saveas ::                Ptr RawTDirectoryFile -> CString -> CString -> IO () -foreign import ccall safe+foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_Write"                c_tdirectoryfile_write ::                Ptr RawTDirectoryFile -> CString -> CInt -> CInt -> IO CInt -foreign import ccall safe+foreign import ccall interruptible+               "HROOTIOTDirectoryFile.h TDirectoryFile_Write_"+               c_tdirectoryfile_write_ :: Ptr RawTDirectoryFile -> IO CInt++foreign import ccall interruptible                "HROOTIOTDirectoryFile.h TDirectoryFile_delete"                c_tdirectoryfile_delete :: Ptr RawTDirectoryFile -> IO ()
src/HROOT/IO/TDirectoryFile/Implementation.hs view
@@ -1,17 +1,26 @@ {-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,   ForeignFunctionInterface, IncoherentInstances,-  MultiParamTypeClasses, OverlappingInstances, TypeFamilies,-  TypeSynonymInstances #-}+  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,+  TypeFamilies, TypeSynonymInstances #-} module HROOT.IO.TDirectoryFile.Implementation where-import FFICXX.Runtime.Cast+import Data.Monoid import Data.Word+import Data.Int import Foreign.C import Foreign.Ptr+import Language.Haskell.TH+import Language.Haskell.TH.Syntax import System.IO.Unsafe+import FFICXX.Runtime.Cast+import FFICXX.Runtime.CodeGen.Cxx+import FFICXX.Runtime.TH import HROOT.IO.TDirectoryFile.RawType import HROOT.IO.TDirectoryFile.FFI import HROOT.IO.TDirectoryFile.Interface import HROOT.IO.TDirectoryFile.Cast+import HROOT.IO.TDirectoryFile.RawType+import HROOT.IO.TDirectoryFile.Cast+import HROOT.IO.TDirectoryFile.Interface import HROOT.Core.TKey.RawType import HROOT.Core.TKey.Cast import HROOT.Core.TKey.Interface@@ -27,13 +36,13 @@ import HROOT.Core.TObject.RawType import HROOT.Core.TObject.Cast import HROOT.Core.TObject.Interface-import HROOT.Core.Deletable.RawType-import HROOT.Core.Deletable.Cast-import HROOT.Core.Deletable.Interface+import STD.Deletable.RawType+import STD.Deletable.Cast+import STD.Deletable.Interface -instance ITDirectoryFile TDirectoryFile+instance () => ITDirectoryFile (TDirectoryFile) where -instance ITDirectory TDirectoryFile where+instance () => ITDirectory (TDirectoryFile) where         append = xform2 c_tdirectoryfile_append         addD = xform2 c_tdirectoryfile_addd         appendKey = xform1 c_tdirectoryfile_appendkey@@ -41,12 +50,13 @@         get = xform1 c_tdirectoryfile_get         cd_TDirectory = xform1 c_tdirectoryfile_cd_tdirectory -instance ITNamed TDirectoryFile where+instance () => ITNamed (TDirectoryFile) where         setName = xform1 c_tdirectoryfile_setname         setNameTitle = xform2 c_tdirectoryfile_setnametitle         setTitle = xform1 c_tdirectoryfile_settitle -instance ITObject TDirectoryFile where+instance () => ITObject (TDirectoryFile) where+        clear = xform1 c_tdirectoryfile_clear         draw = xform1 c_tdirectoryfile_draw         findObject = xform1 c_tdirectoryfile_findobject         getName = xform0 c_tdirectoryfile_getname@@ -55,6 +65,7 @@         printObj = xform1 c_tdirectoryfile_printobj         saveAs = xform2 c_tdirectoryfile_saveas         write = xform3 c_tdirectoryfile_write+        write_ = xform0 c_tdirectoryfile_write_ -instance IDeletable TDirectoryFile where+instance () => IDeletable (TDirectoryFile) where         delete = xform0 c_tdirectoryfile_delete
src/HROOT/IO/TDirectoryFile/Interface.hs view
@@ -4,13 +4,14 @@   TypeSynonymInstances #-} module HROOT.IO.TDirectoryFile.Interface where import Data.Word+import Data.Int import Foreign.C import Foreign.Ptr import FFICXX.Runtime.Cast import HROOT.IO.TDirectoryFile.RawType import HROOT.Core.TDirectory.Interface -class ITDirectory a => ITDirectoryFile a+class (ITDirectory a) => ITDirectoryFile a where  upcastTDirectoryFile ::                      forall a . (FPtr a, ITDirectoryFile a) => a -> TDirectoryFile
src/HROOT/IO/TDirectoryFile/RawType.hs view
@@ -8,9 +8,9 @@ data RawTDirectoryFile  newtype TDirectoryFile = TDirectoryFile (Ptr RawTDirectoryFile)-                       deriving (Eq, Ord, Show)+                           deriving (Eq, Ord, Show) -instance FPtr TDirectoryFile where+instance () => FPtr (TDirectoryFile) where         type Raw TDirectoryFile = RawTDirectoryFile         get_fptr (TDirectoryFile ptr) = ptr         cast_fptr_to_obj = TDirectoryFile
src/HROOT/IO/TFile/Cast.hs view
@@ -8,10 +8,10 @@ import HROOT.IO.TFile.RawType import HROOT.IO.TFile.Interface -instance (ITFile a, FPtr a) => Castable a (Ptr RawTFile) where+instance (ITFile a, FPtr a) => Castable (a) (Ptr RawTFile) where         cast x f = f (castPtr (get_fptr x))         uncast x f = f (cast_fptr_to_obj (castPtr x)) -instance Castable TFile (Ptr RawTFile) where+instance () => Castable (TFile) (Ptr RawTFile) where         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,67 +1,78 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI #-} module HROOT.IO.TFile.FFI where+import Data.Word+import Data.Int import Foreign.C import Foreign.Ptr import HROOT.IO.TFile.RawType+import HROOT.IO.TFile.RawType import HROOT.Core.TObject.RawType import HROOT.Core.TKey.RawType import HROOT.Core.TClass.RawType -foreign import ccall safe "HROOTIOTFile.h TFile_Append"-               c_tfile_append :: Ptr RawTFile -> Ptr RawTObject -> CInt -> IO ()+foreign import ccall interruptible "HROOTIOTFile.h TFile_Append"+               c_tfile_append :: Ptr RawTFile -> Ptr RawTObject -> CBool -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_addD" c_tfile_addd-               :: Ptr RawTFile -> Ptr RawTObject -> CInt -> IO ()+foreign import ccall interruptible "HROOTIOTFile.h TFile_addD"+               c_tfile_addd :: Ptr RawTFile -> Ptr RawTObject -> CBool -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_AppendKey"+foreign import ccall interruptible "HROOTIOTFile.h TFile_AppendKey"                c_tfile_appendkey :: Ptr RawTFile -> Ptr RawTKey -> IO CInt -foreign import ccall safe "HROOTIOTFile.h TFile_Close"+foreign import ccall interruptible "HROOTIOTFile.h TFile_Close"                c_tfile_close :: Ptr RawTFile -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_Get" c_tfile_get ::-               Ptr RawTFile -> CString -> IO (Ptr RawTObject)+foreign import ccall interruptible "HROOTIOTFile.h TFile_Get"+               c_tfile_get :: Ptr RawTFile -> CString -> IO (Ptr RawTObject) -foreign import ccall safe "HROOTIOTFile.h TFile_cd_TDirectory"-               c_tfile_cd_tdirectory :: Ptr RawTFile -> CString -> IO CInt+foreign import ccall interruptible+               "HROOTIOTFile.h TFile_cd_TDirectory" c_tfile_cd_tdirectory ::+               Ptr RawTFile -> CString -> IO CBool -foreign import ccall safe "HROOTIOTFile.h TFile_SetName"+foreign import ccall interruptible "HROOTIOTFile.h TFile_SetName"                c_tfile_setname :: Ptr RawTFile -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_SetNameTitle"-               c_tfile_setnametitle :: Ptr RawTFile -> CString -> CString -> IO ()+foreign import ccall interruptible+               "HROOTIOTFile.h TFile_SetNameTitle" c_tfile_setnametitle ::+               Ptr RawTFile -> CString -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_SetTitle"+foreign import ccall interruptible "HROOTIOTFile.h TFile_SetTitle"                c_tfile_settitle :: Ptr RawTFile -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_Draw" c_tfile_draw-               :: Ptr RawTFile -> CString -> IO ()+foreign import ccall interruptible "HROOTIOTFile.h TFile_Clear"+               c_tfile_clear :: Ptr RawTFile -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_FindObject"-               c_tfile_findobject ::+foreign import ccall interruptible "HROOTIOTFile.h TFile_Draw"+               c_tfile_draw :: Ptr RawTFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTFile.h TFile_FindObject" c_tfile_findobject ::                Ptr RawTFile -> CString -> IO (Ptr RawTObject) -foreign import ccall safe "HROOTIOTFile.h TFile_GetName"+foreign import ccall interruptible "HROOTIOTFile.h TFile_GetName"                c_tfile_getname :: Ptr RawTFile -> IO CString -foreign import ccall safe "HROOTIOTFile.h TFile_IsA" c_tfile_isa ::-               Ptr RawTFile -> IO (Ptr RawTClass)+foreign import ccall interruptible "HROOTIOTFile.h TFile_IsA"+               c_tfile_isa :: Ptr RawTFile -> IO (Ptr RawTClass) -foreign import ccall safe "HROOTIOTFile.h TFile_Paint"+foreign import ccall interruptible "HROOTIOTFile.h TFile_Paint"                c_tfile_paint :: Ptr RawTFile -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_printObj"+foreign import ccall interruptible "HROOTIOTFile.h TFile_printObj"                c_tfile_printobj :: Ptr RawTFile -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_SaveAs"+foreign import ccall interruptible "HROOTIOTFile.h TFile_SaveAs"                c_tfile_saveas :: Ptr RawTFile -> CString -> CString -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_Write"+foreign import ccall interruptible "HROOTIOTFile.h TFile_Write"                c_tfile_write :: Ptr RawTFile -> CString -> CInt -> CInt -> IO CInt -foreign import ccall safe "HROOTIOTFile.h TFile_delete"+foreign import ccall interruptible "HROOTIOTFile.h TFile_Write_"+               c_tfile_write_ :: Ptr RawTFile -> IO CInt++foreign import ccall interruptible "HROOTIOTFile.h TFile_delete"                c_tfile_delete :: Ptr RawTFile -> IO () -foreign import ccall safe "HROOTIOTFile.h TFile_newTFile"+foreign import ccall interruptible "HROOTIOTFile.h TFile_newTFile"                c_tfile_newtfile ::                CString -> CString -> CString -> CInt -> IO (Ptr RawTFile)
src/HROOT/IO/TFile/Implementation.hs view
@@ -1,17 +1,26 @@ {-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,   ForeignFunctionInterface, IncoherentInstances,-  MultiParamTypeClasses, OverlappingInstances, TypeFamilies,-  TypeSynonymInstances #-}+  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,+  TypeFamilies, TypeSynonymInstances #-} module HROOT.IO.TFile.Implementation where-import FFICXX.Runtime.Cast+import Data.Monoid import Data.Word+import Data.Int import Foreign.C import Foreign.Ptr+import Language.Haskell.TH+import Language.Haskell.TH.Syntax import System.IO.Unsafe+import FFICXX.Runtime.Cast+import FFICXX.Runtime.CodeGen.Cxx+import FFICXX.Runtime.TH import HROOT.IO.TFile.RawType import HROOT.IO.TFile.FFI import HROOT.IO.TFile.Interface import HROOT.IO.TFile.Cast+import HROOT.IO.TFile.RawType+import HROOT.IO.TFile.Cast+import HROOT.IO.TFile.Interface import HROOT.Core.TKey.RawType import HROOT.Core.TKey.Cast import HROOT.Core.TKey.Interface@@ -30,15 +39,15 @@ import HROOT.Core.TObject.RawType import HROOT.Core.TObject.Cast import HROOT.Core.TObject.Interface-import HROOT.Core.Deletable.RawType-import HROOT.Core.Deletable.Cast-import HROOT.Core.Deletable.Interface+import STD.Deletable.RawType+import STD.Deletable.Cast+import STD.Deletable.Interface -instance ITFile TFile+instance () => ITFile (TFile) where -instance ITDirectoryFile TFile+instance () => ITDirectoryFile (TFile) where -instance ITDirectory TFile where+instance () => ITDirectory (TFile) where         append = xform2 c_tfile_append         addD = xform2 c_tfile_addd         appendKey = xform1 c_tfile_appendkey@@ -46,12 +55,13 @@         get = xform1 c_tfile_get         cd_TDirectory = xform1 c_tfile_cd_tdirectory -instance ITNamed TFile where+instance () => ITNamed (TFile) where         setName = xform1 c_tfile_setname         setNameTitle = xform2 c_tfile_setnametitle         setTitle = xform1 c_tfile_settitle -instance ITObject TFile where+instance () => ITObject (TFile) where+        clear = xform1 c_tfile_clear         draw = xform1 c_tfile_draw         findObject = xform1 c_tfile_findobject         getName = xform0 c_tfile_getname@@ -60,8 +70,9 @@         printObj = xform1 c_tfile_printobj         saveAs = xform2 c_tfile_saveas         write = xform3 c_tfile_write+        write_ = xform0 c_tfile_write_ -instance IDeletable TFile where+instance () => IDeletable (TFile) where         delete = xform0 c_tfile_delete  newTFile ::
src/HROOT/IO/TFile/Interface.hs view
@@ -4,13 +4,14 @@   TypeSynonymInstances #-} module HROOT.IO.TFile.Interface where import Data.Word+import Data.Int import Foreign.C import Foreign.Ptr import FFICXX.Runtime.Cast import HROOT.IO.TFile.RawType import HROOT.IO.TDirectoryFile.Interface -class ITDirectoryFile a => ITFile a+class (ITDirectoryFile a) => ITFile a where  upcastTFile :: forall a . (FPtr a, ITFile a) => a -> TFile upcastTFile h
src/HROOT/IO/TFile/RawType.hs view
@@ -8,9 +8,9 @@ data RawTFile  newtype TFile = TFile (Ptr RawTFile)-              deriving (Eq, Ord, Show)+                  deriving (Eq, Ord, Show) -instance FPtr TFile where+instance () => FPtr (TFile) where         type Raw TFile = RawTFile         get_fptr (TFile ptr) = ptr         cast_fptr_to_obj = TFile
+ src/HROOT/IO/TH.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE FlexibleContexts, FlexibleInstances,+  ForeignFunctionInterface, InterruptibleFFI, TemplateHaskell #-}+module HROOT.IO.TH () where+import Data.Char+import Data.List+import Data.Monoid+import Foreign.C.Types+import Foreign.Ptr+import Language.Haskell.TH+import Language.Haskell.TH.Syntax+import FFICXX.Runtime.CodeGen.Cxx+import FFICXX.Runtime.TH
+ src/HROOT/IO/TMemFile.hs view
@@ -0,0 +1,7 @@+module HROOT.IO.TMemFile+       (TMemFile(..), ITMemFile, upcastTMemFile, downcastTMemFile,+        newTMemFile)+       where+import HROOT.IO.TMemFile.RawType+import HROOT.IO.TMemFile.Interface+import HROOT.IO.TMemFile.Implementation
+ src/HROOT/IO/TMemFile/Cast.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies,+  MultiParamTypeClasses, OverlappingInstances, IncoherentInstances+  #-}+module HROOT.IO.TMemFile.Cast where+import Foreign.Ptr+import FFICXX.Runtime.Cast+import System.IO.Unsafe+import HROOT.IO.TMemFile.RawType+import HROOT.IO.TMemFile.Interface++instance (ITMemFile a, FPtr a) => Castable (a) (Ptr RawTMemFile)+         where+        cast x f = f (castPtr (get_fptr x))+        uncast x f = f (cast_fptr_to_obj (castPtr x))++instance () => Castable (TMemFile) (Ptr RawTMemFile) where+        cast x f = f (castPtr (get_fptr x))+        uncast x f = f (cast_fptr_to_obj (castPtr x))
+ src/HROOT/IO/TMemFile/FFI.hsc view
@@ -0,0 +1,93 @@+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI #-}+module HROOT.IO.TMemFile.FFI where+import Data.Word+import Data.Int+import Foreign.C+import Foreign.Ptr+import HROOT.IO.TMemFile.RawType+import HROOT.IO.TMemFile.RawType+import HROOT.Core.TObject.RawType+import HROOT.Core.TKey.RawType+import HROOT.Core.TClass.RawType++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Append" c_tmemfile_append ::+               Ptr RawTMemFile -> Ptr RawTObject -> CBool -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_addD" c_tmemfile_addd ::+               Ptr RawTMemFile -> Ptr RawTObject -> CBool -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_AppendKey" c_tmemfile_appendkey ::+               Ptr RawTMemFile -> Ptr RawTKey -> IO CInt++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Close" c_tmemfile_close ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible "HROOTIOTMemFile.h TMemFile_Get"+               c_tmemfile_get :: Ptr RawTMemFile -> CString -> IO (Ptr RawTObject)++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_cd_TDirectory" c_tmemfile_cd_tdirectory+               :: Ptr RawTMemFile -> CString -> IO CBool++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_SetName" c_tmemfile_setname ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_SetNameTitle" c_tmemfile_setnametitle+               :: Ptr RawTMemFile -> CString -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_SetTitle" c_tmemfile_settitle ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Clear" c_tmemfile_clear ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Draw" c_tmemfile_draw ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_FindObject" c_tmemfile_findobject ::+               Ptr RawTMemFile -> CString -> IO (Ptr RawTObject)++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_GetName" c_tmemfile_getname ::+               Ptr RawTMemFile -> IO CString++foreign import ccall interruptible "HROOTIOTMemFile.h TMemFile_IsA"+               c_tmemfile_isa :: Ptr RawTMemFile -> IO (Ptr RawTClass)++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Paint" c_tmemfile_paint ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_printObj" c_tmemfile_printobj ::+               Ptr RawTMemFile -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_SaveAs" c_tmemfile_saveas ::+               Ptr RawTMemFile -> CString -> CString -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Write" c_tmemfile_write ::+               Ptr RawTMemFile -> CString -> CInt -> CInt -> IO CInt++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_Write_" c_tmemfile_write_ ::+               Ptr RawTMemFile -> IO CInt++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_delete" c_tmemfile_delete ::+               Ptr RawTMemFile -> IO ()++foreign import ccall interruptible+               "HROOTIOTMemFile.h TMemFile_newTMemFile" c_tmemfile_newtmemfile ::+               CString -> CString -> CString -> CInt -> IO (Ptr RawTMemFile)
+ src/HROOT/IO/TMemFile/Implementation.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,+  ForeignFunctionInterface, IncoherentInstances,+  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,+  TypeFamilies, TypeSynonymInstances #-}+module HROOT.IO.TMemFile.Implementation where+import Data.Monoid+import Data.Word+import Data.Int+import Foreign.C+import Foreign.Ptr+import Language.Haskell.TH+import Language.Haskell.TH.Syntax+import System.IO.Unsafe+import FFICXX.Runtime.Cast+import FFICXX.Runtime.CodeGen.Cxx+import FFICXX.Runtime.TH+import HROOT.IO.TMemFile.RawType+import HROOT.IO.TMemFile.FFI+import HROOT.IO.TMemFile.Interface+import HROOT.IO.TMemFile.Cast+import HROOT.IO.TMemFile.RawType+import HROOT.IO.TMemFile.Cast+import HROOT.IO.TMemFile.Interface+import HROOT.Core.TKey.RawType+import HROOT.Core.TKey.Cast+import HROOT.Core.TKey.Interface+import HROOT.Core.TClass.RawType+import HROOT.Core.TClass.Cast+import HROOT.Core.TClass.Interface+import HROOT.IO.TFile.RawType+import HROOT.IO.TFile.Cast+import HROOT.IO.TFile.Interface+import HROOT.IO.TDirectoryFile.RawType+import HROOT.IO.TDirectoryFile.Cast+import HROOT.IO.TDirectoryFile.Interface+import HROOT.Core.TDirectory.RawType+import HROOT.Core.TDirectory.Cast+import HROOT.Core.TDirectory.Interface+import HROOT.Core.TNamed.RawType+import HROOT.Core.TNamed.Cast+import HROOT.Core.TNamed.Interface+import HROOT.Core.TObject.RawType+import HROOT.Core.TObject.Cast+import HROOT.Core.TObject.Interface+import STD.Deletable.RawType+import STD.Deletable.Cast+import STD.Deletable.Interface++instance () => ITMemFile (TMemFile) where++instance () => ITFile (TMemFile) where++instance () => ITDirectoryFile (TMemFile) where++instance () => ITDirectory (TMemFile) where+        append = xform2 c_tmemfile_append+        addD = xform2 c_tmemfile_addd+        appendKey = xform1 c_tmemfile_appendkey+        close = xform1 c_tmemfile_close+        get = xform1 c_tmemfile_get+        cd_TDirectory = xform1 c_tmemfile_cd_tdirectory++instance () => ITNamed (TMemFile) where+        setName = xform1 c_tmemfile_setname+        setNameTitle = xform2 c_tmemfile_setnametitle+        setTitle = xform1 c_tmemfile_settitle++instance () => ITObject (TMemFile) where+        clear = xform1 c_tmemfile_clear+        draw = xform1 c_tmemfile_draw+        findObject = xform1 c_tmemfile_findobject+        getName = xform0 c_tmemfile_getname+        isA = xform0 c_tmemfile_isa+        paint = xform1 c_tmemfile_paint+        printObj = xform1 c_tmemfile_printobj+        saveAs = xform2 c_tmemfile_saveas+        write = xform3 c_tmemfile_write+        write_ = xform0 c_tmemfile_write_++instance () => IDeletable (TMemFile) where+        delete = xform0 c_tmemfile_delete++newTMemFile ::+              (Castable c2 CString, Castable c1 CString, Castable c0 CString) =>+              c0 -> c1 -> c2 -> CInt -> IO TMemFile+newTMemFile = xform3 c_tmemfile_newtmemfile
+ src/HROOT/IO/TMemFile/Interface.hs view
@@ -0,0 +1,27 @@+{-# LANGUAGE EmptyDataDecls, ExistentialQuantification,+  FlexibleContexts, FlexibleInstances, ForeignFunctionInterface,+  MultiParamTypeClasses, ScopedTypeVariables, TypeFamilies,+  TypeSynonymInstances #-}+module HROOT.IO.TMemFile.Interface where+import Data.Word+import Data.Int+import Foreign.C+import Foreign.Ptr+import FFICXX.Runtime.Cast+import HROOT.IO.TMemFile.RawType+import HROOT.IO.TFile.Interface++class (ITFile a) => ITMemFile a where++upcastTMemFile :: forall a . (FPtr a, ITMemFile a) => a -> TMemFile+upcastTMemFile h+  = let fh = get_fptr h+        fh2 :: Ptr RawTMemFile = castPtr fh+      in cast_fptr_to_obj fh2++downcastTMemFile ::+                 forall a . (FPtr a, ITMemFile a) => TMemFile -> a+downcastTMemFile h+  = let fh = get_fptr h+        fh2 = castPtr fh+      in cast_fptr_to_obj fh2
+ src/HROOT/IO/TMemFile/RawType.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE ForeignFunctionInterface, TypeFamilies,+  MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances,+  EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}+module HROOT.IO.TMemFile.RawType where+import Foreign.Ptr+import FFICXX.Runtime.Cast++data RawTMemFile++newtype TMemFile = TMemFile (Ptr RawTMemFile)+                     deriving (Eq, Ord, Show)++instance () => FPtr (TMemFile) where+        type Raw TMemFile = RawTMemFile+        get_fptr (TMemFile ptr) = ptr+        cast_fptr_to_obj = TMemFile
+ src/HROOT/IO/Template.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE EmptyDataDecls, FlexibleInstances,+  ForeignFunctionInterface, InterruptibleFFI, MultiParamTypeClasses,+  TypeFamilies #-}+module HROOT.IO.Template () where+import Foreign.C.Types+import Foreign.Ptr+import FFICXX.Runtime.Cast