Fix Mac OS X compilation
[scilab.git] / scilab / modules / ast / includes / types / int.hxx
index 0a8abd3..a1f1266 100644 (file)
@@ -23,6 +23,7 @@
 #include "internal.hxx"
 #include "types_transposition.hxx"
 #include "configvariable.hxx"
+#include "type_traits.hxx"
 
 #include <sstream>
 #include <string>
@@ -136,7 +137,7 @@ public :
             }
         }
 
-        if (memcmp(ArrayOf<T>::get(), pb->get(), GenericType::getSize() * sizeof(int)) != 0)
+        if (memcmp(ArrayOf<T>::get(), pb->get(), GenericType::getSize() * sizeof(T)) != 0)
         {
             return false;
         }
@@ -168,7 +169,23 @@ private :
         int iLineLen = ConfigVariable::getConsoleWidth();
         int iMaxLines = ConfigVariable::getConsoleLines();
 
-        if (ArrayOf<T>::isScalar())
+        if (GenericType::isIdentity())
+        {
+            ostr << L"eye *" << std::endl << std::endl;
+            int iWidth = 0;
+            if (isSigned())
+            {
+                getSignedIntFormat(ArrayOf<T>::get(0), &iWidth);
+                addSignedIntValue(&ostr, ArrayOf<T>::get(0), iWidth);
+            }
+            else
+            {
+                getUnsignedIntFormat(ArrayOf<T>::get(0), &iWidth);
+                addUnsignedIntValue(&ostr, ArrayOf<T>::get(0), iWidth);
+            }
+            ostr << std::endl;
+        }
+        else if (GenericType::isScalar())
         {
             //scalar
             int iWidth  = 0;
@@ -259,7 +276,7 @@ private :
                 }
 
                 iLen = iWidth + static_cast<int>(ostemp.str().size());
-                if (iLen > iLineLen)
+                if (iLen > iLineLen && iLastVal != i)
                 {
                     //Max length, new line
                     iCurrentLine += 4; //"column x to Y" + empty line + value + empty line
@@ -269,7 +286,7 @@ private :
                         return false;
                     }
 
-                    ostr << std::endl << L"       column " << iLastVal + 1 << L" to " << i << std::endl << std::endl;
+                    addColumnString(ostr, iLastVal + 1, i);
                     ostr << ostemp.str() << std::endl;
                     ostemp.str(L"");
                     iLastVal = i;
@@ -287,8 +304,9 @@ private :
 
             if (iLastVal != 0)
             {
-                ostr << std::endl << L"       column " << iLastVal + 1 << L" to " << GenericType::getCols() << std::endl << std::endl;
+                addColumnString(ostr, iLastVal + 1, GenericType::getCols());
             }
+
             ostemp << std::endl;
             ostr << ostemp.str();
         }
@@ -323,7 +341,7 @@ private :
                     piSize[iCols1] = std::max(piSize[iCols1], iWidth);
                 }
 
-                if (iLen + piSize[iCols1] > iLineLen)
+                if (iLen + piSize[iCols1] > iLineLen && iCols1 != iLastCol)
                 {
                     //find the limit, print this part
                     for (int iRows2 = this->m_iRows2PrintState ; iRows2 < this->getRows() ; iRows2++)
@@ -336,8 +354,9 @@ private :
                             if (this->m_iRows2PrintState == 0 && iRows2 != 0)
                             {
                                 //add header
-                                ostr << std::endl << L"       column " << iLastCol + 1 << L" to " << iCols1 << std::endl << std::endl;
+                                addColumnString(ostr, iLastCol + 1, iCols1);
                             }
+
                             ostr << ostemp.str();
                             this->m_iRows2PrintState = iRows2;
                             this->m_iCols1PrintState = iLastCol;
@@ -367,7 +386,7 @@ private :
                     if (this->m_iRows2PrintState == 0)
                     {
                         iCurrentLine += 3;
-                        ostr << std::endl << L"       column " << iLastCol + 1 << L" to " << iCols1 << std::endl << std::endl;
+                        addColumnString(ostr, iLastCol + 1, iCols1);
                     }
 
                     ostr << ostemp.str();
@@ -388,7 +407,7 @@ private :
                     if (this->m_iRows2PrintState == 0 && iLastCol != 0)
                     {
                         //add header
-                        ostr << std::endl << L"       column " << iLastCol + 1 << L" to " << GenericType::getCols() << std::endl << std::endl;
+                        addColumnString(ostr, iLastCol + 1, GenericType::getCols());
                     }
 
                     ostr << ostemp.str();
@@ -417,8 +436,9 @@ private :
 
             if (this->m_iRows2PrintState == 0 && iLastCol != 0)
             {
-                ostr << std::endl << L"       column " << iLastCol + 1 << L" to " << GenericType::getCols() << std::endl << std::endl;
+                addColumnString(ostr, iLastCol + 1, GenericType::getCols());
             }
+
             ostr << ostemp.str();
         }