fix tostring for the macro 50/14950/11
Sylvain GENIN [Fri, 25 Jul 2014 13:33:40 +0000 (15:33 +0200)]
mymatrix=[ 94  0   0   0    0   28  0   0   32  0
0   59  13  5    0   0   0   10  0   0
0   13  72  34   2   0   0   0   0   65
0   5   34  114  0   0   0   0   0   55
0   0   2   0    70  0   28  32  12  0
28  0   0   0    0   87  20  0   33  0
0   0   0   0    28  20  71  39  0   0
0   10  0   0    32  0   39  46  8   0
32  0   0   0    12  33  0   8   82  11
0   0   65  55   0   0   0   0   11  100];
b = [154.
87.
186.
208.
144.
168.
158.
135.
178.
231.];
function y=Atimesx(x,mymatrix)
    y=mymatrix*x
endfunction
Alist = list(Atimesx,mymatrix)

function myfunc()
endfunction

list(cos, acosh, myfunc)

Change-Id: Ie02690fab3bf55af9597bd41a96d75c05d46f6eb

scilab/modules/ast/src/cpp/types/macro.cpp

index 4a83605..498ed80 100644 (file)
@@ -98,8 +98,51 @@ ast::SeqExp* Macro::getBody(void)
 
 bool Macro::toString(std::wostringstream& ostr)
 {
-    ostr << L"FIXME : Implement Macro::toString" << std::endl;
+    ostr << L"[";
+
+    // output arguments [a,b,c] = ....
+    if (m_outputArgs->empty() == false)
+    {
+        std::list<symbol::Variable*>::iterator OutArg = m_outputArgs->begin();
+        std::list<symbol::Variable*>::iterator OutArgfter = OutArg;
+        OutArgfter++;
+
+        for (; OutArgfter != m_outputArgs->end(); OutArgfter++)
+        {
+            ostr << (*OutArg)->getSymbol().getName();
+            ostr << ",";
+            OutArg++;
+        }
+
+        ostr << (*OutArg)->getSymbol().getName();
+    }
+
+    ostr << L"]";
+
+    // function name
+    ostr << L"=" << getName() << L"(";
+
+    // input arguments function(a,b,c)
+    if (m_inputArgs->empty() == false)
+    {
+        std::list<symbol::Variable*>::iterator inArg = m_inputArgs->begin();
+        std::list<symbol::Variable*>::iterator inRagAfter = inArg;
+        inRagAfter++;
+
+        for (; inRagAfter != m_inputArgs->end(); inRagAfter++)
+        {
+            ostr << (*inArg)->getSymbol().getName();
+            ostr << ",";
+            inArg++;
+        }
+
+        ostr << (*inArg)->getSymbol().getName();
+    }
+
+    ostr << L")" << std::endl;
+
     scilabWriteW(ostr.str().c_str());
+
     return true;
 }