allow multidimensions in GetIntegerVariable 42/16342/10
Sylvain GENIN [Wed, 8 Apr 2015 15:17:52 +0000 (17:17 +0200)]
Change-Id: I377345eff79a55609d9a1368883409cb7fda0cb3

scilab/modules/matio/Makefile.am
scilab/modules/matio/Makefile.in
scilab/modules/matio/matio.vcxproj
scilab/modules/matio/matio.vcxproj.filters
scilab/modules/matio/src/c/GetIntegerVariable.c [deleted file]
scilab/modules/matio/src/cpp/ConvertSciVarToMatVar.cpp
scilab/modules/matio/src/cpp/GetIntegerVariable.cpp [new file with mode: 0644]
scilab/modules/matio/src/cpp/GetMatlabVariable.hxx
scilab/modules/matio/src/cpp/GetStructVariable.cpp

index 3eb0dd1..fc40758 100644 (file)
@@ -28,7 +28,6 @@ MATIO_C_SOURCES = \
     src/c/CreateSparseVariable.c \
     src/c/GetMatlabVariable.c \
     src/c/GetCharVariable.c \
-    src/c/GetIntegerVariable.c \
     src/c/GetMlistVariable.c \
     src/c/GetSparseVariable.c
 
@@ -41,6 +40,7 @@ MATIO_CPP_SOURCES = \
     src/cpp/GetStructVariable.cpp \
     src/cpp/CreateStructVariable.cpp \
        src/cpp/ConvertSciVarToMatVar.cpp \
+    src/cpp/GetIntegerVariable.cpp \
        src/cpp/GetDoubleVariable.cpp
 
 libscimatio_la_LDFLAGS = $(AM_LDFLAGS)
index 5213ae6..be1cb0d 100644 (file)
@@ -169,14 +169,14 @@ am__libscimatio_algo_la_SOURCES_DIST = src/c/matfile_manager.c \
        src/c/CreateCharVariable.c src/c/CreateDoubleVariable.c \
        src/c/CreateIntegerVariable.c src/c/CreateSparseVariable.c \
        src/c/GetMatlabVariable.c src/c/GetCharVariable.c \
-       src/c/GetIntegerVariable.c src/c/GetMlistVariable.c \
-       src/c/GetSparseVariable.c src/cpp/CreateCellVariable.cpp \
+       src/c/GetMlistVariable.c src/c/GetSparseVariable.c \
+       src/cpp/CreateCellVariable.cpp \
        src/cpp/CreateHyperMatrixVariable.cpp \
        src/cpp/CreateMatlabTreeVariable.cpp \
        src/cpp/GetCellVariable.cpp src/cpp/GetStructVariable.cpp \
        src/cpp/CreateStructVariable.cpp \
        src/cpp/ConvertSciVarToMatVar.cpp \
-       src/cpp/GetDoubleVariable.cpp
+       src/cpp/GetIntegerVariable.cpp src/cpp/GetDoubleVariable.cpp
 am__dirstamp = $(am__leading_dot)dirstamp
 @MATIO_TRUE@am__objects_1 =  \
 @MATIO_TRUE@   src/c/libscimatio_algo_la-matfile_manager.lo \
@@ -188,7 +188,6 @@ am__dirstamp = $(am__leading_dot)dirstamp
 @MATIO_TRUE@   src/c/libscimatio_algo_la-CreateSparseVariable.lo \
 @MATIO_TRUE@   src/c/libscimatio_algo_la-GetMatlabVariable.lo \
 @MATIO_TRUE@   src/c/libscimatio_algo_la-GetCharVariable.lo \
-@MATIO_TRUE@   src/c/libscimatio_algo_la-GetIntegerVariable.lo \
 @MATIO_TRUE@   src/c/libscimatio_algo_la-GetMlistVariable.lo \
 @MATIO_TRUE@   src/c/libscimatio_algo_la-GetSparseVariable.lo
 @MATIO_TRUE@am__objects_2 =  \
@@ -199,6 +198,7 @@ am__dirstamp = $(am__leading_dot)dirstamp
 @MATIO_TRUE@   src/cpp/libscimatio_algo_la-GetStructVariable.lo \
 @MATIO_TRUE@   src/cpp/libscimatio_algo_la-CreateStructVariable.lo \
 @MATIO_TRUE@   src/cpp/libscimatio_algo_la-ConvertSciVarToMatVar.lo \
+@MATIO_TRUE@   src/cpp/libscimatio_algo_la-GetIntegerVariable.lo \
 @MATIO_TRUE@   src/cpp/libscimatio_algo_la-GetDoubleVariable.lo
 am_libscimatio_algo_la_OBJECTS = $(am__objects_1) $(am__objects_2)
 libscimatio_algo_la_OBJECTS = $(am_libscimatio_algo_la_OBJECTS)
@@ -690,7 +690,6 @@ HELP_CHAPTERLANG = en_US fr_FR pt_BR
 @MATIO_TRUE@    src/c/CreateSparseVariable.c \
 @MATIO_TRUE@    src/c/GetMatlabVariable.c \
 @MATIO_TRUE@    src/c/GetCharVariable.c \
-@MATIO_TRUE@    src/c/GetIntegerVariable.c \
 @MATIO_TRUE@    src/c/GetMlistVariable.c \
 @MATIO_TRUE@    src/c/GetSparseVariable.c
 
@@ -704,6 +703,7 @@ HELP_CHAPTERLANG = en_US fr_FR pt_BR
 @MATIO_TRUE@    src/cpp/GetStructVariable.cpp \
 @MATIO_TRUE@    src/cpp/CreateStructVariable.cpp \
 @MATIO_TRUE@   src/cpp/ConvertSciVarToMatVar.cpp \
+@MATIO_TRUE@    src/cpp/GetIntegerVariable.cpp \
 @MATIO_TRUE@   src/cpp/GetDoubleVariable.cpp
 
 @MATIO_TRUE@libscimatio_la_LDFLAGS = $(AM_LDFLAGS)
@@ -860,8 +860,6 @@ src/c/libscimatio_algo_la-GetMatlabVariable.lo: src/c/$(am__dirstamp) \
        src/c/$(DEPDIR)/$(am__dirstamp)
 src/c/libscimatio_algo_la-GetCharVariable.lo: src/c/$(am__dirstamp) \
        src/c/$(DEPDIR)/$(am__dirstamp)
-src/c/libscimatio_algo_la-GetIntegerVariable.lo:  \
-       src/c/$(am__dirstamp) src/c/$(DEPDIR)/$(am__dirstamp)
 src/c/libscimatio_algo_la-GetMlistVariable.lo: src/c/$(am__dirstamp) \
        src/c/$(DEPDIR)/$(am__dirstamp)
 src/c/libscimatio_algo_la-GetSparseVariable.lo: src/c/$(am__dirstamp) \
@@ -886,6 +884,8 @@ src/cpp/libscimatio_algo_la-CreateStructVariable.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscimatio_algo_la-ConvertSciVarToMatVar.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscimatio_algo_la-GetIntegerVariable.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscimatio_algo_la-GetDoubleVariable.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 
@@ -944,7 +944,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-CreateMatlabVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-CreateSparseVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-GetCharVariable.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-GetMatlabVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-GetMlistVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscimatio_algo_la-GetSparseVariable.Plo@am__quote@
@@ -956,6 +955,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscimatio_algo_la-CreateStructVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscimatio_algo_la-GetCellVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscimatio_algo_la-GetDoubleVariable.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscimatio_algo_la-GetStructVariable.Plo@am__quote@
 
 .c.o:
@@ -1045,13 +1045,6 @@ src/c/libscimatio_algo_la-GetCharVariable.lo: src/c/GetCharVariable.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscimatio_algo_la-GetCharVariable.lo `test -f 'src/c/GetCharVariable.c' || echo '$(srcdir)/'`src/c/GetCharVariable.c
 
-src/c/libscimatio_algo_la-GetIntegerVariable.lo: src/c/GetIntegerVariable.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscimatio_algo_la-GetIntegerVariable.lo -MD -MP -MF src/c/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Tpo -c -o src/c/libscimatio_algo_la-GetIntegerVariable.lo `test -f 'src/c/GetIntegerVariable.c' || echo '$(srcdir)/'`src/c/GetIntegerVariable.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Tpo src/c/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/c/GetIntegerVariable.c' object='src/c/libscimatio_algo_la-GetIntegerVariable.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscimatio_algo_la-GetIntegerVariable.lo `test -f 'src/c/GetIntegerVariable.c' || echo '$(srcdir)/'`src/c/GetIntegerVariable.c
-
 src/c/libscimatio_algo_la-GetMlistVariable.lo: src/c/GetMlistVariable.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscimatio_algo_la-GetMlistVariable.lo -MD -MP -MF src/c/$(DEPDIR)/libscimatio_algo_la-GetMlistVariable.Tpo -c -o src/c/libscimatio_algo_la-GetMlistVariable.lo `test -f 'src/c/GetMlistVariable.c' || echo '$(srcdir)/'`src/c/GetMlistVariable.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscimatio_algo_la-GetMlistVariable.Tpo src/c/$(DEPDIR)/libscimatio_algo_la-GetMlistVariable.Plo
@@ -1181,6 +1174,13 @@ src/cpp/libscimatio_algo_la-ConvertSciVarToMatVar.lo: src/cpp/ConvertSciVarToMat
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscimatio_algo_la-ConvertSciVarToMatVar.lo `test -f 'src/cpp/ConvertSciVarToMatVar.cpp' || echo '$(srcdir)/'`src/cpp/ConvertSciVarToMatVar.cpp
 
+src/cpp/libscimatio_algo_la-GetIntegerVariable.lo: src/cpp/GetIntegerVariable.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscimatio_algo_la-GetIntegerVariable.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Tpo -c -o src/cpp/libscimatio_algo_la-GetIntegerVariable.lo `test -f 'src/cpp/GetIntegerVariable.cpp' || echo '$(srcdir)/'`src/cpp/GetIntegerVariable.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Tpo src/cpp/$(DEPDIR)/libscimatio_algo_la-GetIntegerVariable.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/GetIntegerVariable.cpp' object='src/cpp/libscimatio_algo_la-GetIntegerVariable.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscimatio_algo_la-GetIntegerVariable.lo `test -f 'src/cpp/GetIntegerVariable.cpp' || echo '$(srcdir)/'`src/cpp/GetIntegerVariable.cpp
+
 src/cpp/libscimatio_algo_la-GetDoubleVariable.lo: src/cpp/GetDoubleVariable.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscimatio_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscimatio_algo_la-GetDoubleVariable.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscimatio_algo_la-GetDoubleVariable.Tpo -c -o src/cpp/libscimatio_algo_la-GetDoubleVariable.lo `test -f 'src/cpp/GetDoubleVariable.cpp' || echo '$(srcdir)/'`src/cpp/GetDoubleVariable.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscimatio_algo_la-GetDoubleVariable.Tpo src/cpp/$(DEPDIR)/libscimatio_algo_la-GetDoubleVariable.Plo
index 0567676..f5d35e5 100644 (file)
@@ -203,6 +203,7 @@ lib /DEF:"$(ProjectDir)Sparse_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platfo
     <ClCompile Include="src\cpp\CreateStructVariable.cpp" />
     <ClCompile Include="src\cpp\GetCellVariable.cpp" />
     <ClCompile Include="src\cpp\GetDoubleVariable.cpp" />
+    <ClCompile Include="src\cpp\GetIntegerVariable.cpp" />
     <ClCompile Include="src\cpp\GetStructVariable.cpp" />
     <ClCompile Include="src\c\CreateBooleanVariable.c" />
     <ClCompile Include="src\c\CreateCharVariable.c" />
@@ -212,7 +213,6 @@ lib /DEF:"$(ProjectDir)Sparse_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platfo
     <ClCompile Include="src\c\CreateSparseVariable.c" />
     <ClCompile Include="src\c\DllmainMatio.c" />
     <ClCompile Include="src\c\GetCharVariable.c" />
-    <ClCompile Include="src\c\GetIntegerVariable.c" />
     <ClCompile Include="src\c\GetMatlabVariable.c" />
     <ClCompile Include="src\c\GetMlistVariable.c" />
     <ClCompile Include="src\c\GetSparseVariable.c" />
index db555db..fd08dba 100644 (file)
@@ -48,9 +48,6 @@
     <ClCompile Include="src\c\GetCharVariable.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="src\c\GetIntegerVariable.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="src\c\GetMatlabVariable.c">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -90,6 +87,9 @@
     <ClCompile Include="src\cpp\GetDoubleVariable.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="src\cpp\GetIntegerVariable.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="src\c\CreateMatlabVariable.h">
diff --git a/scilab/modules/matio/src/c/GetIntegerVariable.c b/scilab/modules/matio/src/c/GetIntegerVariable.c
deleted file mode 100644 (file)
index bcc5e15..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2008 - INRIA - Vincent COUVERT
- * Copyright (C) 2010 - DIGITEO - Yann COLLETTE
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
- *
- */
-
-#include "GetMatlabVariable.h"
-#include "sci_types.h"
-#include "api_scilab.h"
-
-matvar_t *GetIntegerVariable(void *pvApiCtx, int iVar, const char *name, int * parent, int item_position)
-{
-    int rank = 0;
-    size_t *pszDims = NULL;
-    int *piDims = NULL;
-    matvar_t *createdVar = NULL;
-    int * var_addr = NULL;
-    int i;
-    int var_type;
-    int integerType;
-    SciErr sciErr;
-    char * tmp_int8 = NULL;
-    short * tmp_int16 = NULL;
-    int * tmp_int32 = NULL;
-    int * item_addr = NULL;
-    unsigned char * tmp_uint8 = NULL;
-    unsigned short * tmp_uint16 = NULL;
-    unsigned int * tmp_uint32 = NULL;
-#ifdef __SCILAB_INT64__
-    long long * tmp_int64 = NULL;
-    unsigned long long * tmp_uint64 = NULL;
-#endif
-
-    if (parent == NULL)
-    {
-        sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &var_addr);
-        if (sciErr.iErr)
-        {
-            printError(&sciErr, 0);
-            return 0;
-        }
-        sciErr = getVarType(pvApiCtx, var_addr, &var_type);
-        if (sciErr.iErr)
-        {
-            printError(&sciErr, 0);
-            return 0;
-        }
-    }
-    else
-    {
-        sciErr = getListItemAddress(pvApiCtx, parent, item_position, &item_addr);
-        if (sciErr.iErr)
-        {
-            printError(&sciErr, 0);
-            return 0;
-        }
-        sciErr = getVarType(pvApiCtx, item_addr, &var_type);
-        if (sciErr.iErr)
-        {
-            printError(&sciErr, 0);
-            return 0;
-        }
-    }
-
-    if (var_type == sci_ints) /* 2-D array */
-    {
-        rank = 2;
-        if ((pszDims = (size_t*)MALLOC(sizeof(size_t) * rank)) == NULL)
-        {
-            Scierror(999, _("%s: No more memory.\n"), "GetIntegerVariable");
-            return NULL;
-        }
-        if ((piDims = (int*)MALLOC(sizeof(int) * rank)) == NULL)
-        {
-            Scierror(999, _("%s: No more memory.\n"), "GetIntegerVariable");
-            return NULL;
-        }
-
-        if (parent == NULL)
-        {
-            sciErr = getMatrixOfIntegerPrecision(pvApiCtx, var_addr, &integerType);
-        }
-        else
-        {
-            sciErr = getMatrixOfIntegerPrecision(pvApiCtx, item_addr, &integerType);
-        }
-
-        switch (integerType)
-        {
-            case SCI_INT8: /* INT8 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfInteger8(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_int8);
-                }
-                else
-                {
-                    sciErr = getMatrixOfInteger8InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_int8);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_INT8, MAT_T_INT8, rank, pszDims, tmp_int8, 0);
-                break;
-            case SCI_INT16: /* INT16 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfInteger16(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_int16);
-                }
-                else
-                {
-                    sciErr = getMatrixOfInteger16InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_int16);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_INT16, MAT_T_INT16, rank, pszDims, tmp_int16, 0);
-                break;
-            case SCI_INT32: /* INT32 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfInteger32(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_int32);
-                }
-                else
-                {
-                    sciErr = getMatrixOfInteger32InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_int32);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_INT32, MAT_T_INT32, rank, pszDims, tmp_int32, 0);
-                break;
-            case SCI_UINT8: /* UINT8 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfUnsignedInteger8(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_uint8);
-                }
-                else
-                {
-                    sciErr = getMatrixOfUnsignedInteger8InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_uint8);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_UINT8, MAT_T_UINT8, rank, pszDims, tmp_uint8, 0);
-                break;
-            case SCI_UINT16: /* UINT16 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfUnsignedInteger16(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_uint16);
-                }
-                else
-                {
-                    sciErr = getMatrixOfUnsignedInteger16InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_uint16);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_UINT16, MAT_T_UINT16, rank, pszDims, tmp_uint16, 0);
-                break;
-            case SCI_UINT32: /* UINT32 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfUnsignedInteger32(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_uint32);
-                }
-                else
-                {
-                    sciErr = getMatrixOfUnsignedInteger32InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_uint32);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_UINT32, MAT_T_UINT32, rank, pszDims, tmp_uint32, 0);
-                break;
-#ifdef __SCILAB_INT64__
-            case SCI_INT64: /* INT64 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfInteger64(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_int64);
-                }
-                else
-                {
-                    sciErr = getMatrixOfInteger64InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_int64);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_INT64, MAT_T_INT64, rank, pszDims, tmp_int64, 0);
-                break;
-            case SCI_UINT64: /* UINT64 */
-                if (parent == NULL)
-                {
-                    sciErr = getMatrixOfUnsignedInteger64(pvApiCtx, var_addr, &piDims[0], &piDims[1], &tmp_uint64);
-                }
-                else
-                {
-                    sciErr = getMatrixOfUnsignedInteger64InList(pvApiCtx, parent, item_position, &piDims[0], &piDims[1], &tmp_uint64);
-                }
-
-                for (i = 0; i < rank; i++)
-                {
-                    pszDims[i] = piDims[i];
-                }
-
-                createdVar = Mat_VarCreate(name, MAT_C_UINT64, MAT_T_UINT64, rank, pszDims, tmp_uint64, 0);
-                break;
-
-#endif
-            default:
-                createdVar = NULL;
-                break;
-        }
-    }
-    else
-    {
-        Scierror(999, _("%s: Wrong type for first input argument: Integer matrix expected.\n"), "GetIntegerVariable");
-    }
-
-    FREE(pszDims);
-    FREE(piDims);
-
-    return createdVar;
-}
index 5e42d2f..f5d857b 100644 (file)
@@ -42,58 +42,23 @@ matvar_t *ConvertSciVarToMatVar(InternalType* pIT, const char *name, int matfile
         }
         break;
         case GenericType::ScilabInt8:
-        {
-            Int8* pInt8 = pIT->getAs<Int8>();
-            return Mat_VarCreate(name, MAT_C_INT8, MAT_T_INT8, Dims, psize_t, pInt8->get(), 0);
-        }
-        break;
         case GenericType::ScilabUInt8:
-        {
-            UInt8* pUInt8 = pIT->getAs<UInt8>();
-            return Mat_VarCreate(name, MAT_C_INT8, MAT_T_INT8, Dims, psize_t, pUInt8->get(), 0);
-        }
-        break;
         case GenericType::ScilabInt16:
-        {
-            Int16* pInt16 = pIT->getAs<Int16>();
-            return Mat_VarCreate(name, MAT_C_INT16, MAT_T_INT16, Dims, psize_t, pInt16->get(), 0);
-        }
-        break;
         case GenericType::ScilabUInt16:
-        {
-            UInt16* pUInt16 = pIT->getAs<UInt16>();
-            return Mat_VarCreate(name, MAT_C_INT16, MAT_T_INT16, Dims, psize_t, pUInt16->get(), 0);
-        }
-        break;
         case GenericType::ScilabInt32:
-        {
-            Int32* pInt32 = pIT->getAs<Int32>();
-            return Mat_VarCreate(name, MAT_C_INT32, MAT_T_INT32, Dims, psize_t, pInt32->get(), 0);
-        }
-        break;
         case GenericType::ScilabUInt32:
-        {
-            UInt32* pUInt32 = pIT->getAs<UInt32>();
-            return Mat_VarCreate(name, MAT_C_INT32, MAT_T_INT32, Dims, psize_t, pUInt32->get(), 0);
-        }
-        break;
 #ifdef __SCILAB_INT64__
         case GenericType::ScilabInt64:
-        {
-            Int64* pInt64 = pIT->getAs<Int64>();
-            return Mat_VarCreate(name, MAT_C_INT64, MAT_T_INT64, Dims, psize_t, pInt64->get(), 0);
-        }
-        break;
         case GenericType::ScilabUInt64:
+#endif
         {
-            UInt64* pUInt64 = pIT->getAs<UInt64>();
-            return Mat_VarCreate(name, MAT_C_INT64, MAT_T_INT64, Dims, psize_t, pUInt64->get(), 0);
+            return GetIntegerMatVar(pIT, name);
         }
-#endif
+        break;
         case GenericType::ScilabString:
         {
-            String* pUInt32 = pIT->getAs<String>();
-            return Mat_VarCreate(name, MAT_C_CHAR, MAT_T_UINT8, Dims, psize_t, pUInt32->get(), 0);
+            String* pStr = pIT->getAs<String>();
+            return Mat_VarCreate(name, MAT_C_CHAR, MAT_T_UINT8, Dims, psize_t, pStr->get(), 0);
         }
         break;
         case GenericType::ScilabSparse:
diff --git a/scilab/modules/matio/src/cpp/GetIntegerVariable.cpp b/scilab/modules/matio/src/cpp/GetIntegerVariable.cpp
new file mode 100644 (file)
index 0000000..9bee774
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Vincent COUVERT
+ * Copyright (C) 2010 - DIGITEO - Yann COLLETTE
+ * Copyright (C) 2015 - Scilab Enterprises - Sylvain GENIN
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "GetMatlabVariable.hxx"
+
+extern "C"
+{
+#include "sci_types.h"
+#include "api_scilab.h"
+}
+
+matvar_t* GetIntegerVariable(void *pvApiCtx, int iVar, const char *name, int * parent, int item_position)
+{
+    types::GatewayStruct* pStr = (types::GatewayStruct*)pvApiCtx;
+    types::typed_list in = *pStr->m_pIn;
+
+    if (in[iVar - 1]->isInt() == false)
+    {
+        Scierror(999, _("%s: Wrong type for first input argument: Integer matrix expected.\n"), "GetIntegerVariable");
+        return NULL;
+    }
+
+    types::InternalType* pIT = in[iVar - 1]->getAs<types::InternalType>();
+
+    return GetIntegerMatVar(pIT, name);
+}
+
+matvar_t* GetIntegerMatVar(types::InternalType* pITIn, const char *name)
+{
+    int Dims = pITIn->getAs<types::GenericType>()->getDims();
+    int* pDims = pITIn->getAs<types::GenericType>()->getDimsArray();
+    matvar_t * pMatVarOut = NULL;
+
+    size_t* psize_t = (size_t*)MALLOC(Dims * sizeof(size_t));
+    if (psize_t == NULL)
+    {
+        Scierror(999, _("%s: No more memory.\n"), "GetIntegerMatVar");
+        return NULL;
+    }
+
+    for (int i = 0; i < Dims; i++)
+    {
+        psize_t[i] = (int)pDims[i];
+    }
+
+    switch (pITIn->getType())
+    {
+        case types::GenericType::ScilabInt8:
+        {
+            types::Int8* pInt8 = pITIn->getAs<types::Int8>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT8, MAT_T_INT8, Dims, psize_t, pInt8->get(), 0);
+        }
+        break;
+        case types::GenericType::ScilabUInt8:
+        {
+            types::UInt8* pUInt8 = pITIn->getAs<types::UInt8>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT8, MAT_T_INT8, Dims, psize_t, pUInt8->get(), 0);
+        }
+        break;
+        case types::GenericType::ScilabInt16:
+        {
+            types::Int16* pInt16 = pITIn->getAs<types::Int16>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT16, MAT_T_INT16, Dims, psize_t, pInt16->get(), 0);
+        }
+        break;
+        case types::GenericType::ScilabUInt16:
+        {
+            types::UInt16* pUInt16 = pITIn->getAs<types::UInt16>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT16, MAT_T_INT16, Dims, psize_t, pUInt16->get(), 0);
+        }
+        break;
+        case types::GenericType::ScilabInt32:
+        {
+            types::Int32* pInt32 = pITIn->getAs<types::Int32>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT32, MAT_T_INT32, Dims, psize_t, pInt32->get(), 0);
+        }
+        break;
+        case types::GenericType::ScilabUInt32:
+        {
+            types::UInt32* pUInt32 = pITIn->getAs<types::UInt32>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT32, MAT_T_INT32, Dims, psize_t, pUInt32->get(), 0);
+        }
+        break;
+#ifdef __SCILAB_INT64__
+        case types::GenericType::ScilabInt64:
+        {
+            types::Int64* pInt64 = pITIn->getAs<types::Int64>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT64, MAT_T_INT64, Dims, psize_t, pInt64->get(), 0);
+        }
+        break;
+        case types::GenericType::ScilabUInt64:
+        {
+            types::UInt64* pUInt64 = pITIn->getAs<types::UInt64>();
+            pMatVarOut = Mat_VarCreate(name, MAT_C_INT64, MAT_T_INT64, Dims, psize_t, pUInt64->get(), 0);
+        }
+#endif
+        default:
+            Scierror(999, _("%s: Wrong type for input argument #%d: Integer matrix expected.\n"), "GetIntegerMatVar", 1);
+            return NULL;
+            break;
+    }
+
+    FREE(psize_t);
+    return pMatVarOut;
+}
index 0ef30d0..f9e3a17 100644 (file)
@@ -15,6 +15,9 @@
 
 #include "gatewaystruct.hxx"
 #include "double.hxx"
+#include "int.hxx"
+#include "struct.hxx"
+#include "context.hxx"
 
 extern "C"
 {
@@ -23,6 +26,8 @@ extern "C"
 }
 
 
-matvar_t * GetDoubleMatVar(types::Double* pDblIn, const char* name, int matfile_version);
+matvar_t* GetDoubleMatVar(types::Double* pDblIn, const char* name, int matfile_version);
+
+matvar_t* GetIntegerMatVar(types::InternalType* pITIn, const char* name);
 
 #endif /* !__GETMATLABVARIABLE_HXX__ */
index 557afe0..82dfb6f 100644 (file)
@@ -14,8 +14,6 @@
  */
 
 #include "GetMatlabVariable.hxx"
-#include "struct.hxx"
-#include "context.hxx"
 #include "ConvertSciVarToMatVar.hxx"
 
 extern "C"