Skip to content

Commit b4d46be

Browse files
committed
adding (untested) ability to use MStruct as function arguments
1 parent 3068661 commit b4d46be

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

Foreign/Matlab/Engine.hsc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import Foreign
2222
import Foreign.C.String
2323
import Foreign.C.Types
2424
import Data.List
25+
import Foreign.Matlab.Array (createMXScalar)
2526
import Foreign.Matlab.Util
2627
import Foreign.Matlab.Internal
2728

@@ -66,7 +67,7 @@ engineSetVar eng v x = do
6667
r <- withEngine eng (\eng -> withCString v (withMXArray x . engPutVariable eng))
6768
when (r /= 0) $ fail "engineSetVar"
6869

69-
data EngineEvalArg a = EvalArray (MXArray a) | EvalVar String | EvalStr String
70+
data EngineEvalArg a = EvalArray (MXArray a) | EvalStruct MStruct | EvalVar String | EvalStr String
7071

7172
-- |Evaluate a function with the given arguments and number of results.
7273
-- This automates 'engineSetVar' on arguments (using \"hseval_inN\"), 'engineEval', and 'engineGetVar' on results (using \"hseval_outN\").
@@ -82,6 +83,11 @@ engineEvalFun eng fun args no = do
8283
let v = "hseval_in" ++ show i
8384
engineSetVar eng v x
8485
pure v
86+
makearg (EvalStruct x) i = do
87+
xa <- createMXScalar x
88+
let v = "hseval_in" ++ show i
89+
engineSetVar eng v xa
90+
pure v
8591
makearg (EvalVar v) _ = pure v
8692
makearg (EvalStr v) _ = pure $ qt v
8793
makeout i = "hseval_out" ++ show i

0 commit comments

Comments
 (0)