{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-} -- module HROOT.Class.Interface where module HROOT.Hist.TFormula.Interface where import Data.Word import Foreign.C import Foreign.Ptr import Foreign.ForeignPtr import FFICXX.Runtime.Cast import HROOT.Hist.TFormula.RawType import HROOT.Core.TNamed.Interface ---- ============ ---- class (ITNamed a) => ITFormula a where compile :: a -> CString -> IO CInt clear :: a -> CString -> IO () definedValue :: a -> CInt -> IO CDouble eval :: a -> CDouble -> CDouble -> CDouble -> CDouble -> IO CDouble evalParOld :: a -> (Ptr CDouble) -> (Ptr CDouble) -> IO CDouble evalPar :: a -> (Ptr CDouble) -> (Ptr CDouble) -> IO CDouble getNdim :: a -> IO CInt getNpar :: a -> IO CInt getNumber :: a -> IO CInt getParNumber :: a -> CString -> IO CInt isLinear :: a -> IO CInt isNormalized :: a -> IO CInt setNumber :: a -> CInt -> IO () setParameter :: a -> CString -> CDouble -> IO () setParameters :: a -> (Ptr CDouble) -> IO () setParName :: a -> CInt -> CString -> IO () setParNames :: a -> CString -> CString -> CString -> CString -> CString -> CString -> CString -> CString -> CString -> CString -> CString -> IO () update :: a -> IO () instance Existable TFormula where data Exist TFormula = forall a. (FPtr a, ITFormula a) => ETFormula a upcastTFormula :: (FPtr a, ITFormula a) => a -> TFormula upcastTFormula h = let fh = get_fptr h fh2 :: ForeignPtr RawTFormula = castForeignPtr fh in cast_fptr_to_obj fh2 downcastTFormula :: (FPtr a, ITFormula a) => TFormula -> a downcastTFormula h = let fh = get_fptr h fh2 = castForeignPtr fh in cast_fptr_to_obj fh2