{-# OPTIONS_GHC -Wall #-} {-# Language GADTs #-} module Casadi.Option ( Opt(..) , GenericC(..) , setOption , getOption ) where import Casadi.Core.Classes.OptionsFunctionality ( OptionsFunctionalityClass, optionsFunctionality_setOption, optionsFunctionality_hasOption, optionsFunctionality_getOption) import Casadi.GenericC data Opt where Opt :: GenericC a => a -> Opt setOption :: (OptionsFunctionalityClass a, GenericC b) => a -> String -> b -> IO () setOption f name val = do gval <- mkGeneric val optionsFunctionality_setOption f name gval getOption :: (OptionsFunctionalityClass a, GenericC b) => a -> String -> IO (Maybe b) getOption f name = do has <- optionsFunctionality_hasOption f name if has then optionsFunctionality_getOption f name >>= fromGeneric else return Nothing