{-# LANGUAGE ForeignFunctionInterface #-} module MLP.Language where import Foreign.Ptr import Foreign.C.Types import Foreign.C.String import qualified MLP import qualified MLP.Context foreign import ccall unsafe "mlp.h mlp_language_init" c_init :: Ptr MLP.C_context -> CString -> IO (Ptr MLP.C_language) init :: MLP.Context -> String -> IO MLP.Language init ctx@(MLP.Context c_ctx) l = do MLP.withFuncDebug "Language init" $ MLP.Context.try ctx $ do c_lang <- withCString l (\c_name -> c_init c_ctx c_name) return $ MLP.Language c_lang foreign import ccall unsafe "mlp.h mlp_language_delete" c_delete :: Ptr MLP.C_context -> Ptr MLP.C_language -> IO () delete :: MLP.Context -> MLP.Language -> IO () delete ctx@(MLP.Context c_ctx) lang@(MLP.Language c_lang) = do MLP.withFuncDebug "Language delete" $ MLP.Context.try ctx $ c_delete c_ctx c_lang