Scicos src: comment out Structs in var2vec 41/17341/4
Paul Bignier [Mon, 19 Oct 2015 14:31:27 +0000 (16:31 +0200)]
 * Because it is not mapped as a ScilabType (Xcos Java)

Change-Id: Ib9d571e23a768f88c81b076d78138a33bf21f3ce

scilab/modules/scicos/src/cpp/var2vec.cpp
scilab/modules/scicos/src/cpp/vec2var.cpp
scilab/modules/scicos/tests/unit_tests/var2vec.dia.ref
scilab/modules/scicos/tests/unit_tests/var2vec.tst

index 8eafe65..7a5a90c 100644 (file)
@@ -26,7 +26,7 @@
 #include "list.hxx"
 #include "tlist.hxx"
 #include "mlist.hxx"
-#include "struct.hxx"
+//#include "struct.hxx"
 
 extern "C"
 {
@@ -216,44 +216,45 @@ static void encode(types::List* input, std::vector<double> &ret)
     // An empty list input will return [22; 0], a tlist [23; 0] and an mlist [24; 0]
 }
 
-static void encode(types::Struct* input, std::vector<double> &ret)
-{
-    const bool isEmpty = input->getSize() == 0;
+// Structs are not used yet
+//static void encode(types::Struct* input, std::vector<double> &ret)
+//{
+//    const bool isEmpty = input->getSize() == 0;
 
-    types::String* fields = nullptr;
-    int iElements = 0;
-    if (!isEmpty)
-    {
-        fields = input->getFieldNames();
-        iElements = fields->getSize();
-    }
+//    types::String* fields = nullptr;
+//    int iElements = 0;
+//    if (!isEmpty)
+//    {
+//        fields = input->getFieldNames();
+//        iElements = fields->getSize();
+//    }
 
-    ret.push_back(input->getType());
-    ret.push_back(iElements);
-    if (!isEmpty)
-    {
-        // Call var2vec on the struct's fields to extract a header
-        var2vec(fields, ret);
+//    ret.push_back(input->getType());
+//    ret.push_back(iElements);
+//    if (!isEmpty)
+//    {
+//        // Call var2vec on the struct's fields to extract a header
+//        var2vec(fields, ret);
 
-        // Now extract the fields' content, assuming this is not a multidimensional struct
-        types::SingleStruct* content = input->get(0);
-        for (int i = 0; i < iElements; ++i)
-        {
-            var2vec(content->get(fields->get(i)), ret);
-        }
+//        // Now extract the fields' content, assuming this is not a multidimensional struct
+//        types::SingleStruct* content = input->get(0);
+//        for (int i = 0; i < iElements; ++i)
+//        {
+//            var2vec(content->get(fields->get(i)), ret);
+//        }
 
 
-        fields->killMe();
-    }
+//        fields->killMe();
+//    }
 
-    // An empty struct input will return [26; 0]
-}
+//    // An empty struct input will return [26; 0]
+//}
 
 bool var2vec(types::InternalType* in, std::vector<double> &out)
 {
     switch (in->getType())
     {
-        // Reuse scicos model encoding for 'model.opar' and 'model.odstate' fields
+            // Reuse scicos model encoding for 'model.opar' and 'model.odstate' fields
         case types::InternalType::ScilabDouble :
             encode(in->getAs<types::Double>(), out);
             break;
@@ -299,12 +300,13 @@ bool var2vec(types::InternalType* in, std::vector<double> &out)
         case types::InternalType::ScilabMList  :
             encode(in->getAs<types::List>(), out);
             break;
-        case types::InternalType::ScilabStruct :
-            encode(in->getAs<types::Struct>(), out);
-            break;
+            //case types::InternalType::ScilabStruct :
+            //    encode(in->getAs<types::Struct>(), out);
+            //    break;
 
         default :
-            Scierror(999, _("%s: Wrong type for input argument #%d: %s, %s, %s, %s, %s or %s type.\n"), var2vecName.c_str(), 1, "Double", "Integer", "Boolean", "String", "List", "Struct");
+            //Scierror(999, _("%s: Wrong type for input argument #%d: %s, %s, %s, %s, %s or %s type.\n"), var2vecName.c_str(), 1, "Double", "Integer", "Boolean", "String", "List", "Struct");
+            Scierror(999, _("%s: Wrong type for input argument #%d: %s, %s, %s, %s or %s type.\n"), var2vecName.c_str(), 1, "Double", "Integer", "Boolean", "String", "List");
             return false;
     }
 
index c4e54b6..bdcadeb 100644 (file)
@@ -26,7 +26,7 @@
 #include "list.hxx"
 #include "tlist.hxx"
 #include "mlist.hxx"
-#include "struct.hxx"
+//#include "struct.hxx"
 
 extern "C"
 {
@@ -438,78 +438,79 @@ static bool readElement(const double* const input, const int iType, const int iD
             break;
         }
 
-        case types::InternalType::ScilabStruct :
-        {
-            if (inputRows < 2)
-            {
-                Scierror(999, _("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), vec2varName.c_str(), 1, offset + 2, 1);
-                return false;
-            }
-
-            if (iDims <= 0)
-            {
-                res = new types::Struct();
-                offset += 2;
-                break;
-            }
-
-            int offsetSave = 0;
-            if (offset == 0)
-            {
-                offset += 2;
-            }
-            else
-            {
-                // If reading a sublist, start off with a new offset
-                offsetSave = offset;
-                offset = 2;
-            }
-            // Read the header...
-            int elementType = static_cast<int>(*(input + offset));
-            if (elementType != types::InternalType::ScilabString)
-            {
-                Scierror(999, _("%s: Wrong value for input argument #%d: %d (String) expected.\n"), vec2varName.c_str(), 1, 11);
-                return false;
-            }
-            int elementDims = static_cast<int>(*(input + offset + 1));
-            types::InternalType* element;
-            if (!readElement(input + offset, elementType, elementDims, inputRows - offset, offset, element))
-            {
-                return false;
-            }
-
-            types::Struct* pStruct = new types::Struct(1, 1);
-            types::String* header = element->getAs<types::String>();
-            // ... and copy it in 'pStruct'
-            for (int i = 0; i < header->getSize(); ++i)
-            {
-                pStruct->get(0)->addField(header->get(i));
-            }
-
-            for (int i = 1; i < iDims + 1; ++i)
-            {
-                if (inputRows < 2 + offset)
-                {
-                    delete pStruct;
-                    Scierror(999, _("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), vec2varName.c_str(), 1, offset + 2, 1);
-                    return false;
-                }
-                // Extract the fields content infos and recursively call readElement
-                elementType = static_cast<int>(*(input + offset));
-                elementDims = static_cast<int>(*(input + offset + 1));
-                if (!readElement(input + offset, elementType, elementDims, inputRows - offset, offset, element))
-                {
-                    delete pStruct;
-                    return false;
-                }
-                pStruct->get(0)->set(header->get(i - 1), element);
-            }
-
-            header->killMe();
-            offset += offsetSave;
-            res = pStruct;
-            break;
-        }
+        // Structs are not used yet
+        //case types::InternalType::ScilabStruct :
+        //{
+        //    if (inputRows < 2)
+        //    {
+        //        Scierror(999, _("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), vec2varName.c_str(), 1, offset + 2, 1);
+        //        return false;
+        //    }
+
+        //    if (iDims <= 0)
+        //    {
+        //        res = new types::Struct();
+        //        offset += 2;
+        //        break;
+        //    }
+
+        //    int offsetSave = 0;
+        //    if (offset == 0)
+        //    {
+        //        offset += 2;
+        //    }
+        //    else
+        //    {
+        //        // If reading a sublist, start off with a new offset
+        //        offsetSave = offset;
+        //        offset = 2;
+        //    }
+        //    // Read the header...
+        //    int elementType = static_cast<int>(*(input + offset));
+        //    if (elementType != types::InternalType::ScilabString)
+        //    {
+        //        Scierror(999, _("%s: Wrong value for input argument #%d: %d (String) expected.\n"), vec2varName.c_str(), 1, 11);
+        //        return false;
+        //    }
+        //    int elementDims = static_cast<int>(*(input + offset + 1));
+        //    types::InternalType* element;
+        //    if (!readElement(input + offset, elementType, elementDims, inputRows - offset, offset, element))
+        //    {
+        //        return false;
+        //    }
+
+        //    types::Struct* pStruct = new types::Struct(1, 1);
+        //    types::String* header = element->getAs<types::String>();
+        //    // ... and copy it in 'pStruct'
+        //    for (int i = 0; i < header->getSize(); ++i)
+        //    {
+        //        pStruct->get(0)->addField(header->get(i));
+        //    }
+
+        //    for (int i = 1; i < iDims + 1; ++i)
+        //    {
+        //        if (inputRows < 2 + offset)
+        //        {
+        //            delete pStruct;
+        //            Scierror(999, _("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), vec2varName.c_str(), 1, offset + 2, 1);
+        //            return false;
+        //        }
+        //        // Extract the fields content infos and recursively call readElement
+        //        elementType = static_cast<int>(*(input + offset));
+        //        elementDims = static_cast<int>(*(input + offset + 1));
+        //        if (!readElement(input + offset, elementType, elementDims, inputRows - offset, offset, element))
+        //        {
+        //            delete pStruct;
+        //            return false;
+        //        }
+        //        pStruct->get(0)->set(header->get(i - 1), element);
+        //    }
+
+        //    header->killMe();
+        //    offset += offsetSave;
+        //    res = pStruct;
+        //    break;
+        //}
 
         default :
             Scierror(999, _("%s: Wrong value for element #%d of input argument #%d: Unknown type.\n"), vec2varName.c_str(), offset + 1, 1);
index b389605..0c1d162 100644 (file)
@@ -100,10 +100,10 @@ assert_checkequal(vec2var(var2vec(mlEmpties)), mlEmpties);
 mlMixed = mlist(["Type" "f1" "f2" "f3" "f4" "f5", "f6"], [], Mat, HyperMat, int32(Mat), string(Mat), Mat>15);
 assert_checkequal(vec2var(var2vec(mlMixed)), mlMixed);
 // Struct
-st = struct();
-assert_checkequal(vec2var(var2vec(st)), st);
-stFull = struct("f1", [], "f2", Mat, "f3", HyperMat, "f4", int32(Mat), "f5", string(Mat), "f6", Mat>15);
-assert_checkequal(vec2var(var2vec(stFull)), stFull);
+//st = struct();
+//assert_checkequal(vec2var(var2vec(st)), st);
+//stFull = struct("f1", [], "f2", Mat, "f3", HyperMat, "f4", int32(Mat), "f5", string(Mat), "f6", Mat>15);
+//assert_checkequal(vec2var(var2vec(stFull)), stFull);
 // List containing a full TList, taken from PDE.sci
 params_pde = tlist(["paramspde";"a";"b";"txt_exp";"check_op1";"a1";"b1";"check_op2";"a2";"b2";..
 "check_op3";"a3";"b3";"check_op4";"a4";"b4";"check_op5";"a5";"b5";"check_op6";"a6";"b6";..
@@ -136,10 +136,10 @@ sci2exp(pprop(:)),..
 nameF,[]);
 assert_checkequal(vec2var(var2vec(exprs)), exprs);
 // List containing a Struct
-lStFull = list(stFull, [], stFull, "test");
-assert_checkequal(vec2var(var2vec(lStFull)), lStFull);
+//lStFull = list(stFull, [], stFull, "test");
+//assert_checkequal(vec2var(var2vec(lStFull)), lStFull);
 // corner-cases
 a = var2vec(tlist(["" ""],list()));
 vec2var(a);
-a = var2vec(struct("toto", list(struct("titi", 12))));
-vec2var(a);
+//a = var2vec(struct("toto", list(struct("titi", 12))));
+//vec2var(a);
index 33f6191..129fa67 100644 (file)
@@ -110,10 +110,10 @@ mlMixed = mlist(["Type" "f1" "f2" "f3" "f4" "f5", "f6"], [], Mat, HyperMat, int3
 assert_checkequal(vec2var(var2vec(mlMixed)), mlMixed);
 
 // Struct
-st = struct();
-assert_checkequal(vec2var(var2vec(st)), st);
-stFull = struct("f1", [], "f2", Mat, "f3", HyperMat, "f4", int32(Mat), "f5", string(Mat), "f6", Mat>15);
-assert_checkequal(vec2var(var2vec(stFull)), stFull);
+//st = struct();
+//assert_checkequal(vec2var(var2vec(st)), st);
+//stFull = struct("f1", [], "f2", Mat, "f3", HyperMat, "f4", int32(Mat), "f5", string(Mat), "f6", Mat>15);
+//assert_checkequal(vec2var(var2vec(stFull)), stFull);
 
 // List containing a full TList, taken from PDE.sci
 params_pde = tlist(["paramspde";"a";"b";"txt_exp";"check_op1";"a1";"b1";"check_op2";"a2";"b2";..
@@ -149,13 +149,13 @@ nameF,[]);
 assert_checkequal(vec2var(var2vec(exprs)), exprs);
 
 // List containing a Struct
-lStFull = list(stFull, [], stFull, "test");
-assert_checkequal(vec2var(var2vec(lStFull)), lStFull);
+//lStFull = list(stFull, [], stFull, "test");
+//assert_checkequal(vec2var(var2vec(lStFull)), lStFull);
 
 // corner-cases
 a = var2vec(tlist(["" ""],list()));
 vec2var(a);
 
-a = var2vec(struct("toto", list(struct("titi", 12))));
-vec2var(a);
+//a = var2vec(struct("toto", list(struct("titi", 12))));
+//vec2var(a);