From 2e2d1afc4d2849755498062f957e1d8406b507a1 Mon Sep 17 00:00:00 2001 From: Simon Marchetto Date: Thu, 20 Mar 2014 17:36:58 +0100 Subject: [PATCH] scilab: STL containers of int accept doubles in input --- .../scilab/li_std_sequence_container_typemaps_runme.sci | 4 ---- .../test-suite/scilab/li_std_set_as_argument_runme.sci | 2 +- Lib/scilab/scisequenceint.swg | 9 ++++++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Examples/test-suite/scilab/li_std_sequence_container_typemaps_runme.sci b/Examples/test-suite/scilab/li_std_sequence_container_typemaps_runme.sci index 08b66ff55..b7feddccb 100644 --- a/Examples/test-suite/scilab/li_std_sequence_container_typemaps_runme.sci +++ b/Examples/test-suite/scilab/li_std_sequence_container_typemaps_runme.sci @@ -61,10 +61,6 @@ function testSequenceContainer(container, value_type, value1, value2, expected_a checkerror(ierr, cmd); if ~isdef('c') | ~isequal(c, [value1, value2]) then swigtesterror(); end - if (value_type == "int") then - c = int32(c); - end - // test sequence container passed as value of function cmd = msprintf("s = val_%s_%s(c);", value_type, container); ierr = execstr(cmd, "errcatch"); diff --git a/Examples/test-suite/scilab/li_std_set_as_argument_runme.sci b/Examples/test-suite/scilab/li_std_set_as_argument_runme.sci index fc76a8b01..951c4a650 100644 --- a/Examples/test-suite/scilab/li_std_set_as_argument_runme.sci +++ b/Examples/test-suite/scilab/li_std_set_as_argument_runme.sci @@ -15,7 +15,7 @@ if ~exists("isum") | (isum <> 10) then swigtesterror(); end iset2 = create_integer_set(3, 6); if ~exists("iset2") | ~isequal(iset2, [3 4 5 6]) then swigtesterror(); end // concat the two sets with concat_integer_set():"); -iset3 = concat_integer_set(int32(iset), int32(iset2)); +iset3 = concat_integer_set(int32(iset), iset2); if ~exists("iset3") | ~isequal(iset3, [1 2 3 4 5 6]) then swigtesterror(); end // string sets diff --git a/Lib/scilab/scisequenceint.swg b/Lib/scilab/scisequenceint.swg index a4216529e..70dd4a1d8 100644 --- a/Lib/scilab/scisequenceint.swg +++ b/Lib/scilab/scisequenceint.swg @@ -12,6 +12,7 @@ SWIGINTERN int SWIG_AsCheck_Sequence_dec(int)(SwigSciObject _obj) { SciErr sciErr; int *piAddrVar; + int iType = 0; sciErr = getVarAddressFromPosition(pvApiCtx, _obj, &piAddrVar); if (sciErr.iErr) { @@ -19,7 +20,13 @@ SWIG_AsCheck_Sequence_dec(int)(SwigSciObject _obj) { return SWIG_ERROR; } - if (isIntegerType(pvApiCtx, piAddrVar)) + sciErr = getVarType(pvApiCtx, piAddrVar, &iType); + if (sciErr.iErr) { + printError(&sciErr, 0); + return SWIG_ERROR; + } + + if ((iType == sci_matrix) || (iType == sci_ints)) { return SWIG_OK; }