fix llabs()/_abs64() on unsigned warnings
[scilab.git] / scilab / modules / ast / includes / types / tostring_common.hxx
index d58f6a8..b728bc4 100644 (file)
@@ -16,6 +16,7 @@
 #ifndef __TOSTRING_COMMON_HXX__
 #define __TOSTRING_COMMON_HXX__
 
+#include <type_traits>
 #include <sstream>
 #include "os_string.h"
 #include "dynlib_ast.h"
@@ -77,7 +78,10 @@ EXTERN_AST void printComplexValue(std::wostringstream& ostr, double val_r, doubl
 */
 
 template <typename T>
-void getUnsignedIntFormat(T _TVal, int *_piWidth)
+void getIntFormat(T _TVal, int *_piWidth,
+                  typename std::enable_if <
+                  std::is_unsigned<T>::value
+                  >::type* = 0)
 {
     if (_TVal == 0)
     {
@@ -91,7 +95,10 @@ void getUnsignedIntFormat(T _TVal, int *_piWidth)
 }
 
 template <typename T>
-void getSignedIntFormat(T _TVal, int *_piWidth)
+void getIntFormat(T _TVal, int *_piWidth,
+                  typename std::enable_if <
+                  std::is_signed<T>::value
+                  >::type* = 0)
 {
     if (_TVal == 0)
     {
@@ -109,7 +116,10 @@ void getSignedIntFormat(T _TVal, int *_piWidth)
 }
 
 template <typename T>
-void addUnsignedIntValue(std::wostringstream *_postr, T _TVal, int _iWidth, bool bPrintPlusSign = false, bool bPrintOne = true)
+void addIntValue(std::wostringstream *_postr, T _TVal, int _iWidth, bool bPrintPlusSign = false, bool bPrintOne = true,
+                 typename std::enable_if <
+                 std::is_unsigned<T>::value
+                 >::type* = 0)
 {
     const wchar_t * pwstSign = PLUS_STRING;
     wchar_t pwstFormat[32];
@@ -132,7 +142,10 @@ void addUnsignedIntValue(std::wostringstream *_postr, T _TVal, int _iWidth, bool
 }
 
 template <typename T>
-void addSignedIntValue(std::wostringstream *_postr, T _TVal, int _iWidth, bool bPrintPlusSign = false, bool bPrintOne = true)
+void addIntValue(std::wostringstream *_postr, T _TVal, int _iWidth, bool bPrintPlusSign = false, bool bPrintOne = true,
+                 typename std::enable_if <
+                 std::is_signed<T>::value
+                 >::type* = 0)
 {
     const wchar_t* pwstSign = NULL;
     wchar_t pwstFormat[32];