casadi-bindings-internal 0.1.3.1 → 0.1.4.0
raw patch · 4 files changed
+5/−215 lines, 4 files
Files
- casadi-bindings-internal.cabal +2/−6
- cbits/callback.cpp +0/−166
- src/Casadi/Internal/Callback.hs +0/−43
- src/Casadi/Internal/WrapReturn.hs +3/−0
casadi-bindings-internal.cabal view
@@ -1,5 +1,5 @@ name: casadi-bindings-internal-version: 0.1.3.1+version: 0.1.4.0 license: LGPL-3 license-file: LICENSE category: Numerical, Math@@ -13,8 +13,6 @@ homepage: http://github.com/ghorn/casadi-bindings -extra-tmp-files: Casadi/Callback_stub.h- library build-depends: base >=4.6 && <5, vector >=0.10, containers @@ -23,21 +21,19 @@ extra-libraries: stdc++ - pkgconfig-depends: casadi+ pkgconfig-depends: casadi == 3.0.0 ghc-prof-options: -O2 -prof -fprof-auto -fprof-cafs -rtsopts ghc-options: -O2 cc-options: -Wall -Wno-delete-non-virtual-dtor -Wno-sign-compare -std=c++11 C-sources: cbits/hs_tools.cpp- cbits/callback.cpp exposed-modules: Casadi.Internal.Marshal Casadi.Internal.MarshalTypes Casadi.Internal.WrapReturn Casadi.Internal.CppHelpers Casadi.Internal.CToolsImports- Casadi.Internal.Callback Casadi.Internal.FormatException
− cbits/callback.cpp
@@ -1,166 +0,0 @@-#include <iostream>-#include "casadi/core/core.hpp"-#include "casadi/core/function/custom_function.hpp"-#include "casadi/core/functor_internal.hpp"--#include "HsFFI.h"--// #define DEBUG_WOO--using namespace std;-using namespace casadi;--extern "C" {- //todo: use casadi typedefs in functor.hpp- typedef int (*hs_callback_t)(Function &f);- typedef void (*hs_custom_evaluate_t)(CustomFunction &f);- typedef Function& (*hs_derivative_generator_t)(Function &f, int nder);-}--namespace casadi {- // functor- template <class T> class FunctorHaskellInternal {- public:- FunctorHaskellInternal(T hscb) {- functor_fun_ptr = hscb;- }- ~FunctorHaskellInternal() {- // free the haskell FunPtr- #ifdef DEBUG_WOO- std::cout << "functor_internal_free\n";- #endif- hs_free_fun_ptr(HsFunPtr(functor_fun_ptr));- #ifdef DEBUG_WOO- std::cout << "functor_internal_free finished\n";- #endif- }- protected:- T functor_fun_ptr;- };--- // Callback- class CallbackHaskellInternal :- public CallbackInternal, FunctorHaskellInternal<hs_callback_t> {-- friend class CallbackHaskell;- CallbackHaskellInternal(hs_callback_t hscb) : FunctorHaskellInternal<hs_callback_t>(hscb) {}- virtual int call(Function& fcn, void* user_data);- virtual CallbackHaskellInternal* clone() const {- return new CallbackHaskellInternal(functor_fun_ptr);- }- };-- class CallbackHaskell : public Callback {- public:- CallbackHaskell(hs_callback_t hscb) {- assignNode(new CallbackHaskellInternal(hscb));- }- };-- int CallbackHaskellInternal::call(Function& fcn, void* user_data) {- #ifdef DEBUG_WOO- std::cout << "CallbackHaskellInternal::call()\n";- #endif- int f = functor_fun_ptr(fcn);- #ifdef DEBUG_WOO- std::cout << "CallbackHaskellInternal::call() finished\n";- #endif- return f;- }--- // CustomEvaluate- class CustomEvaluateHaskellInternal :- public CustomEvaluateInternal, FunctorHaskellInternal<hs_custom_evaluate_t> {-- friend class CustomEvaluateHaskell;-- CustomEvaluateHaskellInternal(hs_custom_evaluate_t hsce) :- FunctorHaskellInternal<hs_custom_evaluate_t>(hsce) {}- virtual void call(CustomFunction& fcn, void* user_data);- virtual CustomEvaluateHaskellInternal* clone() const {- return new CustomEvaluateHaskellInternal(functor_fun_ptr);- }- };-- class CustomEvaluateHaskell : public CustomEvaluate {- public:- CustomEvaluateHaskell(hs_custom_evaluate_t hsce) {- assignNode(new CustomEvaluateHaskellInternal(hsce));- }- };-- void CustomEvaluateHaskellInternal::call(CustomFunction& fcn, void* user_data) {- #ifdef DEBUG_WOO- std::cout << "CustomEvaluateHaskellInternal::call()\n";- #endif- functor_fun_ptr(fcn);- #ifdef DEBUG_WOO- std::cout << "CustomEvaluateHaskellInternal::call() finished\n";- #endif- }-- - // DerivateGenerator- class DerivativeGeneratorHaskellInternal :- public DerivativeGeneratorInternal, FunctorHaskellInternal<hs_derivative_generator_t> {-- friend class DerivativeGeneratorHaskell;-- DerivativeGeneratorHaskellInternal(hs_derivative_generator_t hsdg) :- FunctorHaskellInternal<hs_derivative_generator_t>(hsdg) {}- virtual Function call(Function& fcn, int nder, void* user_data);- virtual DerivativeGeneratorHaskellInternal* clone() const {- return new DerivativeGeneratorHaskellInternal(functor_fun_ptr);- }- };-- class DerivativeGeneratorHaskell : public DerivativeGenerator {- public:- DerivativeGeneratorHaskell(hs_derivative_generator_t hsce) {- assignNode(new DerivativeGeneratorHaskellInternal(hsce));- }- };-- Function DerivativeGeneratorHaskellInternal::call(Function& fcn, int nder, void* user_data) {- #ifdef DEBUG_WOO- std::cout << "DerivativeGeneratorHaskellInternal::call()\n";- #endif- Function& f = functor_fun_ptr(fcn, nder);- #ifdef DEBUG_WOO- std::cout << "DerivativeGeneratorHaskellInternal::call() finished\n";- #endif- return f;- }-- -} // namespace casadi--extern "C" CallbackHaskell * new_callback_haskell(hs_callback_t hs_callback);-CallbackHaskell * new_callback_haskell(hs_callback_t hs_callback){- return new CallbackHaskell(hs_callback);-}-extern "C" CustomEvaluateHaskell * new_custom_evaluate_haskell(hs_custom_evaluate_t hs_custom_evaluate);-CustomEvaluateHaskell * new_custom_evaluate_haskell(hs_custom_evaluate_t hs_custom_evaluate){- return new CustomEvaluateHaskell(hs_custom_evaluate);-}-extern "C" DerivativeGeneratorHaskell * new_derivative_generator_haskell(hs_derivative_generator_t hs_derivative_generator);-DerivativeGeneratorHaskell * new_derivative_generator_haskell(hs_derivative_generator_t hs_derivative_generator){- return new DerivativeGeneratorHaskell(hs_derivative_generator);-}----extern "C" void delete_callback_haskell(casadi::CallbackHaskell* obj);-void delete_callback_haskell(casadi::CallbackHaskell* obj){- delete obj;-}-extern "C" void delete_custom_evaluate_haskell(casadi::CustomEvaluateHaskell* obj);-void delete_custom_evaluate_haskell(casadi::CustomEvaluateHaskell* obj){- delete obj;-}-extern "C" void delete_derivative_generator_haskell(casadi::DerivativeGeneratorHaskell* obj);-void delete_derivative_generator_haskell(casadi::DerivativeGeneratorHaskell* obj){- delete obj;-}
− src/Casadi/Internal/Callback.hs
@@ -1,43 +0,0 @@-{-# OPTIONS_GHC -Wall #-}-{-# Language ScopedTypeVariables #-}-{-# Language FlexibleContexts #-}--module Casadi.Internal.Callback- ( c_newCallbackHaskell- , mkCallback- , c_newCustomEvaluateHaskell- , mkCustomEvaluate- , c_newDerivativeGeneratorHaskell- , mkDerivativeGenerator- ) where---import Foreign.C.Types-import Foreign.Ptr ( Ptr, FunPtr )---import Foreign.ForeignPtr ( ForeignPtr, newForeignPtr_ )----import Casadi.Symbolic.Data---import Casadi.Internal.Marshal ( withMarshal )---import Casadi.Internal.WrapReturn ( WrapReturn(..) )---- these guys all have type parameters because core depends on internal, not the other way around--type CasadiCallback' function = Ptr function -> IO CInt-foreign import ccall "wrapper" mkCallback- :: CasadiCallback' function -> IO (FunPtr (CasadiCallback' function))-foreign import ccall safe "new_callback_haskell" c_newCallbackHaskell- :: FunPtr (CasadiCallback' function) -> IO (Ptr callback)---type CasadiCustomEvaluate' customFunction = Ptr customFunction -> IO ()-foreign import ccall "wrapper" mkCustomEvaluate- :: CasadiCustomEvaluate' customFunction -> IO (FunPtr (CasadiCustomEvaluate' customFunction))-foreign import ccall safe "new_custom_evaluate_haskell" c_newCustomEvaluateHaskell- :: FunPtr (CasadiCustomEvaluate' customFunction) -> IO (Ptr customEvaluate)---type CasadiDerivativeGenerator' function = Ptr function -> CInt -> IO (Ptr function)-foreign import ccall "wrapper" mkDerivativeGenerator- :: CasadiDerivativeGenerator' function -> IO (FunPtr (CasadiDerivativeGenerator' function))-foreign import ccall safe "new_derivative_generator_haskell" c_newDerivativeGeneratorHaskell- :: FunPtr (CasadiDerivativeGenerator' function) -> IO (Ptr derivativeGenerator)
src/Casadi/Internal/WrapReturn.hs view
@@ -112,5 +112,8 @@ instance WrapReturn (Ptr (StdVec CInt)) (V.Vector Int) where wrapReturn = wrapReturnVec c_sizeVecCInt c_copyVecCInt c_deleteVecCInt wrapReturn +instance WrapReturn (Ptr (StdVec CInt)) (V.Vector Bool) where+ wrapReturn = wrapReturnVec c_sizeVecCInt c_copyVecCInt c_deleteVecCInt wrapReturn+ instance WrapReturn (Ptr (StdVec CDouble)) (V.Vector Double) where wrapReturn = wrapReturnVec c_sizeVecCDouble c_copyVecCDouble c_deleteVecCDouble wrapReturn