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 +60/−0
- Config.hs +0/−85
- HROOT-io.cabal +45/−26
- Setup.hs +27/−0
- Setup.lhs +0/−33
- csrc/HROOT-ioType.h +9/−17
- csrc/HROOTIOTDirectoryFile.cpp +11/−9
- csrc/HROOTIOTDirectoryFile.h +26/−17
- csrc/HROOTIOTFile.cpp +11/−9
- csrc/HROOTIOTFile.h +31/−24
- csrc/HROOTIOTMemFile.cpp +28/−0
- csrc/HROOTIOTMemFile.h +63/−0
- src/HROOT/IO.hs +11/−9
- src/HROOT/IO/Ordinary.hs +6/−0
- src/HROOT/IO/TDirectoryFile/Cast.hs +5/−3
- src/HROOT/IO/TDirectoryFile/FFI.hsc +33/−22
- src/HROOT/IO/TDirectoryFile/Implementation.hs +22/−11
- src/HROOT/IO/TDirectoryFile/Interface.hs +2/−1
- src/HROOT/IO/TDirectoryFile/RawType.hs +2/−2
- src/HROOT/IO/TFile/Cast.hs +2/−2
- src/HROOT/IO/TFile/FFI.hsc +39/−28
- src/HROOT/IO/TFile/Implementation.hs +23/−12
- src/HROOT/IO/TFile/Interface.hs +2/−1
- src/HROOT/IO/TFile/RawType.hs +2/−2
- src/HROOT/IO/TH.hs +12/−0
- src/HROOT/IO/TMemFile.hs +7/−0
- src/HROOT/IO/TMemFile/Cast.hs +18/−0
- src/HROOT/IO/TMemFile/FFI.hsc +93/−0
- src/HROOT/IO/TMemFile/Implementation.hs +86/−0
- src/HROOT/IO/TMemFile/Interface.hs +27/−0
- src/HROOT/IO/TMemFile/RawType.hs +16/−0
- src/HROOT/IO/Template.hs +7/−0
+ 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