[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian-med-packaging] Bug#876147: Bug#876147: camp frequently FTBFS on 64bit big endian: camptest-qt (Failed)



Sorry the patch is ofc meant to be applied on the raw upstream, not
after debian patches being applied. I was applying it directly into the
git repo so that's why I did not have any issue. If you want to keep
trying it this way, I attached a rebased version of the patch that
should apply well on top of other.


Le 16/04/2018 à 13:49, John Paul Adrian Glaubitz a écrit :
> On 04/16/2018 11:58 AM, Flavien Bridault wrote:
>> Weird, it applies well for me on the master branch of the debian
>> repository. Try the patch attached to this email or directly this link
>>
>> https://patch-diff.githubusercontent.com/raw/fw4spl-org/camp/pull/2.diff
>
> Tried to apply against the current package in Debian unstable:
>
> glaubitz@zelenka:~$ md5sum fix-s390.diff
> 3fae8e5c44e239e74e2ef14a667126b4  fix-s390.diff
> glaubitz@zelenka:~$ cd camp/
> glaubitz@zelenka:~/camp$ dget -u
> http://deb.debian.org/debian/pool/main/c/camp/camp_0.8.1-2.dsc
> dget: retrieving
> http://deb.debian.org/debian/pool/main/c/camp/camp_0.8.1-2.dsc
>   % Total    % Received % Xferd  Average Speed   Time    Time    
> Time  Current
>                                  Dload  Upload   Total   Spent   
> Left  Speed
> 100   321  100   321    0     0   4346      0 --:--:-- --:--:--
> --:--:--  4397
> 100  2000  100  2000    0     0  20750      0 --:--:-- --:--:--
> --:--:-- 20750
> dget: retrieving
> http://deb.debian.org/debian/pool/main/c/camp/camp_0.8.1.orig.tar.gz
>   % Total    % Received % Xferd  Average Speed   Time    Time    
> Time  Current
>                                  Dload  Upload   Total   Spent   
> Left  Speed
> 100   327  100   327    0     0   4570      0 --:--:-- --:--:--
> --:--:--  4605
> 100  534k  100  534k    0     0  4044k      0 --:--:-- --:--:--
> --:--:-- 4044k
> dget: retrieving
> http://deb.debian.org/debian/pool/main/c/camp/camp_0.8.1-2.debian.tar.xz
>   % Total    % Received % Xferd  Average Speed   Time    Time    
> Time  Current
>                                  Dload  Upload   Total   Spent   
> Left  Speed
> 100   331  100   331    0     0   4809      0 --:--:-- --:--:--
> --:--:--  4867
> 100  5272  100  5272    0     0  63979      0 --:--:-- --:--:--
> --:--:-- 63979
> dpkg-source: info: extracting camp in camp-0.8.1
> dpkg-source: info: unpacking camp_0.8.1.orig.tar.gz
> dpkg-source: info: unpacking camp_0.8.1-2.debian.tar.xz
> dpkg-source: info: applying remove_licences_files.patch
> dpkg-source: info: applying hide_boost_from_qt4moc.patch
> glaubitz@zelenka:~/camp$ cd camp-0.8.1/
> glaubitz@zelenka:~/camp/camp-0.8.1$ patch -p1 < ~/fix-s390x.patch
> patching file .gitignore
> patching file include/camp/qt/qtfunction.hpp
> patching file include/camp/qt/qthelper.hpp
> patching file include/camp/valuemapper.hpp
> Hunk #2 FAILED at 40.
> Hunk #3 succeeded at 96 (offset 2 lines).
> Hunk #4 succeeded at 126 (offset 2 lines).
> Hunk #5 succeeded at 139 (offset 2 lines).
> Hunk #6 succeeded at 156 (offset 2 lines).
> Hunk #7 succeeded at 183 (offset 2 lines).
> Hunk #8 succeeded at 205 (offset 2 lines).
> Hunk #9 succeeded at 234 (offset 2 lines).
> Hunk #10 succeeded at 250 (offset 2 lines).
> Hunk #11 succeeded at 279 (offset 2 lines).
> Hunk #12 succeeded at 326 (offset 2 lines).
> Hunk #13 succeeded at 345 (offset 2 lines).
> 1 out of 13 hunks FAILED -- saving rejects to file
> include/camp/valuemapper.hpp.rej
> patching file test/arrayproperty.hpp
> Hunk #2 FAILED at 32.
> Hunk #3 succeeded at 78 (offset 2 lines).
> 1 out of 3 hunks FAILED -- saving rejects to file
> test/arrayproperty.hpp.rej
> patching file test/qt/propertymapping.cpp
> Hunk #2 succeeded at 34 with fuzz 2 (offset 2 lines).
> Hunk #3 succeeded at 47 (offset 2 lines).
> Hunk #4 succeeded at 95 (offset 2 lines).
> Hunk #5 succeeded at 106 (offset 2 lines).
> glaubitz@zelenka:~/camp/camp-0.8.1$
>

-- 
*Flavien BRIDAULT*
Ingénieur de Recherche

fbridault@ircad.fr

*IRCAD France*
1, place de l'Hôpital - 67091 Strasbourg Cedex - FRANCE

http://www.ircad.fr/ <http://www.ircad.fr/>

diff -uNr camp-0.8.1.old/.gitignore camp-0.8.1/.gitignore
--- camp-0.8.1.old/.gitignore	2018-04-16 14:08:14.403457120 +0200
+++ camp-0.8.1/.gitignore	2018-04-16 14:08:19.987457060 +0200
@@ -28,6 +28,7 @@
 *.o
 *.a
 moc_*
+build/
 
 *.cmake
 CMakeFiles/
diff -uNr camp-0.8.1.old/include/camp/qt/qtfunction.hpp camp-0.8.1/include/camp/qt/qtfunction.hpp
--- camp-0.8.1.old/include/camp/qt/qtfunction.hpp	2018-04-16 14:08:14.411457120 +0200
+++ camp-0.8.1/include/camp/qt/qtfunction.hpp	2018-04-16 14:08:19.987457060 +0200
@@ -15,10 +15,10 @@
 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 ** copies of the Software, and to permit persons to whom the Software is
 ** furnished to do so, subject to the following conditions:
-** 
+**
 ** The above copyright notice and this permission notice shall be included in
 ** all copies or substantial portions of the Software.
-** 
+**
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -86,7 +86,7 @@
 
             case 1:
             {
-                QVariant arg1 = QtHelper::valueToVariant(args[0]);
+                const auto arg1 = QtHelper::argumentToVariant(args[0], m_metaMethod.parameterType(0));
                 m_metaMethod.invoke(object.get<T*>(), Qt::DirectConnection, ret
                                   , QGenericArgument(arg1.typeName(), arg1.data()));
                 break;
@@ -94,8 +94,8 @@
 
             case 2:
             {
-                QVariant arg1 = QtHelper::valueToVariant(args[0]);
-                QVariant arg2 = QtHelper::valueToVariant(args[1]);
+                const auto arg1 = QtHelper::argumentToVariant(args[0], m_metaMethod.parameterType(0));
+                const auto arg2 = QtHelper::argumentToVariant(args[1], m_metaMethod.parameterType(1));
                 m_metaMethod.invoke(object.get<T*>(), Qt::DirectConnection, ret
                                   , QGenericArgument(arg1.typeName(), arg1.data())
                                   , QGenericArgument(arg2.typeName(), arg2.data()));
@@ -104,9 +104,9 @@
 
             case 3:
             {
-                QVariant arg1 = QtHelper::valueToVariant(args[0]);
-                QVariant arg2 = QtHelper::valueToVariant(args[1]);
-                QVariant arg3 = QtHelper::valueToVariant(args[2]);
+                const auto arg1 = QtHelper::argumentToVariant(args[0], m_metaMethod.parameterType(0));
+                const auto arg2 = QtHelper::argumentToVariant(args[1], m_metaMethod.parameterType(1));
+                const auto arg3 = QtHelper::argumentToVariant(args[2], m_metaMethod.parameterType(2));
                 m_metaMethod.invoke(object.get<T*>(), Qt::DirectConnection, ret
                                   , QGenericArgument(arg1.typeName(), arg1.data())
                                   , QGenericArgument(arg2.typeName(), arg2.data())
@@ -116,10 +116,10 @@
 
             case 4:
             {
-                QVariant arg1 = QtHelper::valueToVariant(args[0]);
-                QVariant arg2 = QtHelper::valueToVariant(args[1]);
-                QVariant arg3 = QtHelper::valueToVariant(args[2]);
-                QVariant arg4 = QtHelper::valueToVariant(args[3]);
+                const auto arg1 = QtHelper::argumentToVariant(args[0], m_metaMethod.parameterType(0));
+                const auto arg2 = QtHelper::argumentToVariant(args[1], m_metaMethod.parameterType(1));
+                const auto arg3 = QtHelper::argumentToVariant(args[2], m_metaMethod.parameterType(2));
+                const auto arg4 = QtHelper::argumentToVariant(args[3], m_metaMethod.parameterType(3));
                 m_metaMethod.invoke(object.get<T*>(), Qt::DirectConnection, ret
                                   , QGenericArgument(arg1.typeName(), arg1.data())
                                   , QGenericArgument(arg2.typeName(), arg2.data())
@@ -130,11 +130,11 @@
 
             case 5:
             {
-                QVariant arg1 = QtHelper::valueToVariant(args[0]);
-                QVariant arg2 = QtHelper::valueToVariant(args[1]);
-                QVariant arg3 = QtHelper::valueToVariant(args[2]);
-                QVariant arg4 = QtHelper::valueToVariant(args[3]);
-                QVariant arg5 = QtHelper::valueToVariant(args[4]);
+                const auto arg1 = QtHelper::argumentToVariant(args[0], m_metaMethod.parameterType(0));
+                const auto arg2 = QtHelper::argumentToVariant(args[1], m_metaMethod.parameterType(1));
+                const auto arg3 = QtHelper::argumentToVariant(args[2], m_metaMethod.parameterType(2));
+                const auto arg4 = QtHelper::argumentToVariant(args[3], m_metaMethod.parameterType(3));
+                const auto arg5 = QtHelper::argumentToVariant(args[4], m_metaMethod.parameterType(4));
                 m_metaMethod.invoke(object.get<T*>(), Qt::DirectConnection, ret
                                   , QGenericArgument(arg1.typeName(), arg1.data())
                                   , QGenericArgument(arg2.typeName(), arg2.data())
diff -uNr camp-0.8.1.old/include/camp/qt/qthelper.hpp camp-0.8.1/include/camp/qt/qthelper.hpp
--- camp-0.8.1.old/include/camp/qt/qthelper.hpp	2018-04-16 14:08:14.411457120 +0200
+++ camp-0.8.1/include/camp/qt/qthelper.hpp	2018-04-16 14:08:19.987457060 +0200
@@ -15,10 +15,10 @@
 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 ** copies of the Software, and to permit persons to whom the Software is
 ** furnished to do so, subject to the following conditions:
-** 
+**
 ** The above copyright notice and this permission notice shall be included in
 ** all copies or substantial portions of the Software.
-** 
+**
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -105,11 +105,11 @@
             case QMetaType::QString:      return QVariant::String;
             case QMetaType::QByteArray:   return QVariant::ByteArray;
             case QMetaType::VoidStar:     return QVariant::Invalid;
-            case QMetaType::Long:         return QVariant::Int;
+            case QMetaType::Long:         return (sizeof(int) == sizeof(long)) ? QVariant::Int : QVariant::LongLong;
             case QMetaType::LongLong:     return QVariant::LongLong;
             case QMetaType::Short:        return QVariant::Int;
             case QMetaType::Char:         return QVariant::Char;
-            case QMetaType::ULong:        return QVariant::UInt;
+            case QMetaType::ULong:        return (sizeof(int) == sizeof(long)) ? QVariant::UInt : QVariant::ULongLong;
             case QMetaType::ULongLong:    return QVariant::ULongLong;
             case QMetaType::UShort:       return QVariant::UInt;
             case QMetaType::UChar:        return QVariant::Char;
@@ -166,12 +166,18 @@
      */
     static QVariant valueToVariant(const camp::Value& value)
     {
+        auto toInt = [](const camp::Value& value)
+        {
+            return value.to<long>() > static_cast<long>(std::numeric_limits<int>::max())
+                    ? QVariant(value.to<long long>())
+                    : QVariant(value.to<int>());
+        };
         switch (value.type())
         {
             default:
             case camp::noType:     return QVariant();
             case camp::boolType:   return QVariant(value.to<bool>());
-            case camp::intType:    return QVariant(value.to<int>());
+            case camp::intType:    return toInt(value);
             case camp::realType:   return QVariant(value.to<double>());
             case camp::stringType: return QVariant(value.to<QString>());
             case camp::enumType:   return QVariant(value.to<int>());
@@ -180,6 +186,38 @@
     }
 
     /**
+     * \brief Convert a CAMP value to a QGenericArgument
+     *
+     * \param value Source camp::Value to convert
+     *
+     * \return \a value converted to a QGenericArgument
+     */
+    static QVariant argumentToVariant(const camp::Value& value, int metaType)
+    {
+        switch (metaType)
+        {
+            default:
+            case QMetaType::Void:         return QVariant();
+            case QMetaType::Bool:         return value.to<bool>();
+            case QMetaType::Int:          return value.to<int>();
+            case QMetaType::UInt:         return value.to<unsigned int>();
+            case QMetaType::Double:       return value.to<double>();
+            case QMetaType::QChar:        return value.to<char>();
+            case QMetaType::QString:      return value.to<QString>();
+            case QMetaType::Long:         return sizeof(int) == sizeof(long) ? value.to<int>(): value.to<long long>();
+            case QMetaType::LongLong:     return value.to<long long>();
+            case QMetaType::Short:        return value.to<short>();
+            case QMetaType::Char:         return value.to<char>();
+            case QMetaType::ULong:        return sizeof(int) == sizeof(long) ? value.to<unsigned int>(): value.to<unsigned long long>();
+            case QMetaType::ULongLong:    return value.to<unsigned long long>();;
+            case QMetaType::UShort:       return value.to<unsigned short>();;
+            case QMetaType::UChar:        return value.to<unsigned char>();;
+            case QMetaType::Float:        return value.to<float>();
+        }
+    }
+
+
+    /**
      * \brief Convert a QVariant to a CAMP value
      *
      * \param variant Source QVariant to convert
diff -uNr camp-0.8.1.old/include/camp/valuemapper.hpp camp-0.8.1/include/camp/valuemapper.hpp
--- camp-0.8.1.old/include/camp/valuemapper.hpp	2018-04-16 14:08:14.407457120 +0200
+++ camp-0.8.1/include/camp/valuemapper.hpp	2018-04-16 14:09:23.543456370 +0200
@@ -15,10 +15,10 @@
 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 ** copies of the Software, and to permit persons to whom the Software is
 ** furnished to do so, subject to the following conditions:
-** 
+**
 ** The above copyright notice and this permission notice shall be included in
 ** all copies or substantial portions of the Software.
-** 
+**
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -41,8 +41,8 @@
 #include <camp/errors.hpp>
 #ifndef Q_MOC_RUN
 #include <boost/lexical_cast.hpp>
-#include <boost/type_traits.hpp>
-#include <boost/utility/enable_if.hpp>
+
+#include <type_traits>
 #endif
 
 
@@ -96,13 +96,13 @@
  *     {
  *         // The corresponding CAMP type is "string"
  *         static const int type = camp::string;
- *  
+ *
  *         // Convert from MyStringClass to std::string
  *         static std::string to(const MyStringClass& source)
  *         {
  *             return source.to_std_string();
  *         }
- * 
+ *
  *         // Convert from any type to MyStringClass
  *         // Be smart, juste reuse ValueMapper<std::string> :)
  *         template <typename T>
@@ -126,7 +126,9 @@
     static camp::UserObject to(const T& source) {return camp::UserObject(source);}
 
     static T from(bool)                           {CAMP_ERROR(camp::BadType(camp::boolType,   camp::mapType<T>()));}
+    static T from(int)                            {CAMP_ERROR(camp::BadType(camp::intType,    camp::mapType<T>()));}
     static T from(long)                           {CAMP_ERROR(camp::BadType(camp::intType,    camp::mapType<T>()));}
+    static T from(long long)                      {CAMP_ERROR(camp::BadType(camp::intType,    camp::mapType<T>()));}
     static T from(double)                         {CAMP_ERROR(camp::BadType(camp::realType,   camp::mapType<T>()));}
     static T from(const std::string&)             {CAMP_ERROR(camp::BadType(camp::stringType, camp::mapType<T>()));}
     static T from(const camp::EnumObject&)        {CAMP_ERROR(camp::BadType(camp::enumType,   camp::mapType<T>()));}
@@ -137,7 +139,7 @@
  * Specialization of ValueMapper for abstract types
  */
 template <typename T>
-struct ValueMapper<T, typename boost::enable_if<boost::is_abstract<T> >::type>
+struct ValueMapper<T, typename std::enable_if<std::is_abstract<T>::value >::type>
 {
     static const int type = camp::userType;
     static camp::UserObject to(const T& source) {return camp::UserObject(source);}
@@ -154,8 +156,9 @@
 
     static bool from(bool source)                    {return source;}
     static bool from(long source)                    {return source != 0;}
+    static bool from(long long source)               {return source != 0;}
     static bool from(double source)                  {return source != 0.;}
-    static bool from(const std::string& source)      
+    static bool from(const std::string& source)
     {
         bool result;
         if(source.compare("true") == 0)
@@ -180,16 +183,18 @@
  * Specialization of ValueMapper for integers
  */
 template <typename T>
-struct ValueMapper<T, typename boost::enable_if_c<boost::is_integral<T>::value
-                                                  && !boost::is_const<T>::value // to avoid conflict with ValueMapper<const T>
-                                                  && !boost::is_reference<T>::value // to avoid conflict with ValueMapper<T&>
-                                                 >::type>
+struct ValueMapper<T, typename std::enable_if<std::is_integral<T>::value
+                                          && !std::is_const<T>::value // to avoid conflict with ValueMapper<const T>
+                                          && !std::is_reference<T>::value // to avoid conflict with ValueMapper<T&>
+                                         >::type>
 {
     static const int type = camp::intType;
     static long to(T source) {return static_cast<long>(source);}
 
     static T from(bool source)                    {return static_cast<T>(source);}
+    static T from(int source)                     {return static_cast<T>(source);}
     static T from(long source)                    {return static_cast<T>(source);}
+    static T from(long long )                     {CAMP_ERROR(camp::BadType(camp::userType, camp::intType));}
     static T from(double source)                  {return static_cast<T>(source);}
     static T from(const std::string& source)      {return boost::lexical_cast<T>(source);}
     static T from(const camp::EnumObject& source) {return static_cast<T>(source.value());}
@@ -200,16 +205,19 @@
  * Specialization of ValueMapper for reals
  */
 template <typename T>
-struct ValueMapper<T, typename boost::enable_if_c<boost::is_float<T>::value
-                                                  && !boost::is_const<T>::value // to avoid conflict with ValueMapper<const T>
-                                                  && !boost::is_reference<T>::value // to avoid conflict with ValueMapper<T&>
-                                                 >::type>
+struct ValueMapper<T, typename std::enable_if<std::is_floating_point<T>::value
+                                          && !std::is_const<T>::value // to avoid conflict with ValueMapper<const T>
+                                          && !std::is_reference<T>::value // to avoid conflict with ValueMapper<T&>
+                                         >::type>
 {
     static const int type = camp::realType;
     static double to(T source) {return static_cast<double>(source);}
 
     static T from(bool source)                    {return static_cast<T>(source);}
+    static T from(int source)                     {return static_cast<T>(source);}
     static T from(long source)                    {return static_cast<T>(source);}
+    static T from(long long source)               {return static_cast<T>(source);}
+    static T from(float source)                   {return static_cast<T>(source);}
     static T from(double source)                  {return static_cast<T>(source);}
     static T from(const std::string& source)      {return boost::lexical_cast<T>(source);}
     static T from(const camp::EnumObject& source) {return static_cast<T>(source.value());}
@@ -226,7 +234,9 @@
     static const std::string& to(const std::string& source) {return source;}
 
     static std::string from(bool source)                    {return boost::lexical_cast<std::string>(source);}
+    static std::string from(int source)                     {return boost::lexical_cast<std::string>(source);}
     static std::string from(long source)                    {return boost::lexical_cast<std::string>(source);}
+    static std::string from(long long source)               {return boost::lexical_cast<std::string>(source);}
     static std::string from(double source)                  {return boost::lexical_cast<std::string>(source);}
     static std::string from(const std::string& source)      {return source;}
     static std::string from(const camp::EnumObject& source) {return source.name();}
@@ -240,10 +250,10 @@
  * Warning: special case for char[] and const char[], they are strings not arrays
  */
 template <typename T>
-struct ValueMapper<T, typename boost::enable_if_c<camp::detail::IsArray<T>::value
-                                                  && !boost::is_same<typename camp_ext::ArrayMapper<T>::ElementType, char>::value
-                                                  && !boost::is_same<typename camp_ext::ArrayMapper<T>::ElementType, const char>::value
-                                                 >::type>
+struct ValueMapper<T, typename std::enable_if<camp::detail::IsArray<T>::value
+                                              && !std::is_same<typename camp_ext::ArrayMapper<T>::ElementType, char>::value
+                                              && !std::is_same<typename camp_ext::ArrayMapper<T>::ElementType, const char>::value
+                                             >::type>
 {
     static const int type = camp::arrayType;
 };
@@ -269,16 +279,18 @@
  * Specialization of ValueMapper for enum types
  */
 template <typename T>
-struct ValueMapper<T, typename boost::enable_if_c<boost::is_enum<T>::value
-                                                  && !boost::is_const<T>::value // to avoid conflict with ValueMapper<const T>
-                                                  && !boost::is_reference<T>::value // to avoid conflict with ValueMapper<T&>
-                                                 >::type>
+struct ValueMapper<T, typename std::enable_if<std::is_enum<T>::value
+                                              && !std::is_const<T>::value // to avoid conflict with ValueMapper<const T>
+                                              && !std::is_reference<T>::value // to avoid conflict with ValueMapper<T&>
+                                             >::type>
 {
     static const int type = camp::enumType;
     static camp::EnumObject to(T source) {return camp::EnumObject(source);}
 
     static T from(bool source)                    {return static_cast<T>(static_cast<long>(source));}
+    static T from(int source)                     {return static_cast<T>(source);}
     static T from(long source)                    {return static_cast<T>(source);}
+    static T from(long long source)               {return static_cast<T>(source);}
     static T from(double source)                  {return static_cast<T>(static_cast<long>(source));}
     static T from(const camp::EnumObject& source) {return static_cast<T>(source.value());}
     static T from(const camp::UserObject&)        {CAMP_ERROR(camp::BadType(camp::userType, camp::enumType));}
@@ -314,11 +326,13 @@
     static const camp::EnumObject& to(const camp::EnumObject& source) {return source;}
     static const camp::EnumObject& from(const camp::EnumObject& source) {return source;}
 
-    static camp::UserObject from(bool)                    {CAMP_ERROR(camp::BadType(camp::boolType,   camp::enumType));}
-    static camp::UserObject from(long)                    {CAMP_ERROR(camp::BadType(camp::intType,    camp::enumType));}
-    static camp::UserObject from(double)                  {CAMP_ERROR(camp::BadType(camp::realType,   camp::enumType));}
-    static camp::UserObject from(const std::string&)      {CAMP_ERROR(camp::BadType(camp::stringType, camp::enumType));}
-    static camp::UserObject from(const camp::UserObject&) {CAMP_ERROR(camp::BadType(camp::enumType,   camp::enumType));}
+    static camp::UserObject from(bool)                    {CAMP_ERROR(camp::BadType(camp::boolType,     camp::enumType));}
+    static camp::UserObject from(int)                     {CAMP_ERROR(camp::BadType(camp::intType,      camp::enumType));}
+    static camp::UserObject from(long)                    {CAMP_ERROR(camp::BadType(camp::intType,      camp::enumType));}
+    static camp::UserObject from(long long)               {CAMP_ERROR(camp::BadType(camp::intType,      camp::enumType));}
+    static camp::UserObject from(double)                  {CAMP_ERROR(camp::BadType(camp::realType,     camp::enumType));}
+    static camp::UserObject from(const std::string&)      {CAMP_ERROR(camp::BadType(camp::stringType,   camp::enumType));}
+    static camp::UserObject from(const camp::UserObject&) {CAMP_ERROR(camp::BadType(camp::enumType,     camp::enumType));}
 };
 
 /*
@@ -331,11 +345,13 @@
     static const camp::UserObject& to(const camp::UserObject& source) {return source;}
     static const camp::UserObject& from(const camp::UserObject& source) {return source;}
 
-    static camp::UserObject from(bool)                    {CAMP_ERROR(camp::BadType(camp::boolType,   camp::userType));}
-    static camp::UserObject from(long)                    {CAMP_ERROR(camp::BadType(camp::intType,    camp::userType));}
-    static camp::UserObject from(double)                  {CAMP_ERROR(camp::BadType(camp::realType,   camp::userType));}
-    static camp::UserObject from(const std::string&)      {CAMP_ERROR(camp::BadType(camp::stringType, camp::userType));}
-    static camp::UserObject from(const camp::EnumObject&) {CAMP_ERROR(camp::BadType(camp::enumType,   camp::userType));}
+    static camp::UserObject from(bool)                    {CAMP_ERROR(camp::BadType(camp::boolType,     camp::userType));}
+    static camp::UserObject from(int)                     {CAMP_ERROR(camp::BadType(camp::intType,      camp::userType));}
+    static camp::UserObject from(long)                    {CAMP_ERROR(camp::BadType(camp::intType,      camp::userType));}
+    static camp::UserObject from(long long)               {CAMP_ERROR(camp::BadType(camp::intType,      camp::userType));}
+    static camp::UserObject from(double)                  {CAMP_ERROR(camp::BadType(camp::realType,     camp::userType));}
+    static camp::UserObject from(const std::string&)      {CAMP_ERROR(camp::BadType(camp::stringType,   camp::userType));}
+    static camp::UserObject from(const camp::EnumObject&) {CAMP_ERROR(camp::BadType(camp::enumType,     camp::userType));}
 };
 
 /*
diff -uNr camp-0.8.1.old/test/arrayproperty.hpp camp-0.8.1/test/arrayproperty.hpp
--- camp-0.8.1.old/test/arrayproperty.hpp	2018-04-16 14:08:14.411457120 +0200
+++ camp-0.8.1/test/arrayproperty.hpp	2018-04-16 14:09:41.687456173 +0200
@@ -13,10 +13,10 @@
 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 ** copies of the Software, and to permit persons to whom the Software is
 ** furnished to do so, subject to the following conditions:
-** 
+**
 ** The above copyright notice and this permission notice shall be included in
 ** all copies or substantial portions of the Software.
-** 
+**
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -33,7 +33,7 @@
 #include <camp/camptype.hpp>
 #include <camp/class.hpp>
 #ifndef Q_MOC_RUN
-#include <boost/array.hpp>
+#include <array>
 #endif
 #include <list>
 #include <vector>
@@ -78,7 +78,7 @@
         }
 
         bool bools[2];
-        boost::array<int, 3> ints;
+        std::array<int, 3> ints;
         std::vector<std::string> strings;
         std::list<MyType> objects;
     };
diff -uNr camp-0.8.1.old/test/qt/propertymapping.cpp camp-0.8.1/test/qt/propertymapping.cpp
--- camp-0.8.1.old/test/qt/propertymapping.cpp	2018-04-16 14:08:14.411457120 +0200
+++ camp-0.8.1/test/qt/propertymapping.cpp	2018-04-16 14:08:19.987457060 +0200
@@ -13,10 +13,10 @@
 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 ** copies of the Software, and to permit persons to whom the Software is
 ** furnished to do so, subject to the following conditions:
-** 
+**
 ** The above copyright notice and this permission notice shall be included in
 ** all copies or substantial portions of the Software.
-** 
+**
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -34,6 +34,8 @@
 #include <boost/test/unit_test.hpp>
 #endif
 
+#include <numeric>
+
 using namespace PropertyMappingTest;
 
 //-----------------------------------------------------------------------------
@@ -45,7 +47,7 @@
 
         object.setBool(true);
         object.setInt(-10);
-        object.setULong(20);
+        object.setULong(std::numeric_limits<unsigned long>::max() - 1);
         object.setDouble(0.55);
         object.setString("hello");
         object.setEnum(MyClass::two);
@@ -93,7 +95,7 @@
 {
     BOOST_CHECK_EQUAL(metaclass->property("m_bool_read").get(object).to<bool>(),           true);
     BOOST_CHECK_EQUAL(metaclass->property("m_int_read").get(object).to<int>(),             -10);
-    BOOST_CHECK_EQUAL(metaclass->property("m_ulong_read").get(object).to<unsigned long>(), 20);
+    BOOST_CHECK_EQUAL(metaclass->property("m_ulong_read").get(object).to<unsigned long>(), std::numeric_limits<unsigned long>::max() - 1);
     BOOST_CHECK_CLOSE(metaclass->property("m_double_read").get(object).to<double>(),       0.55, 1E-5);
     BOOST_CHECK_EQUAL(metaclass->property("m_string_read").get(object).to<QString>(),      "hello");
     BOOST_CHECK_EQUAL(metaclass->property("m_enum_read").get(object).to<MyClass::Enum>(),  MyClass::two);
@@ -104,14 +106,14 @@
 {
     metaclass->property("m_bool").set(object, false);
     metaclass->property("m_int").set(object, -2);
-    metaclass->property("m_ulong").set(object, 50);
+    metaclass->property("m_ulong").set(object, std::numeric_limits<unsigned long>::max() - 1);
     metaclass->property("m_double").set(object, -8.8);
     metaclass->property("m_string").set(object, "bonjour");
     metaclass->property("m_enum").set(object, MyClass::three);
 
     BOOST_CHECK_EQUAL(metaclass->property("m_bool").get(object).to<bool>(),           false);
     BOOST_CHECK_EQUAL(metaclass->property("m_int").get(object).to<int>(),             -2);
-    BOOST_CHECK_EQUAL(metaclass->property("m_ulong").get(object).to<unsigned long>(), 50);
+    BOOST_CHECK_EQUAL(metaclass->property("m_ulong").get(object).to<unsigned long>(), std::numeric_limits<unsigned long>::max() - 1);
     BOOST_CHECK_CLOSE(metaclass->property("m_double").get(object).to<double>(),       -8.8, 1E-5);
     BOOST_CHECK_EQUAL(metaclass->property("m_string").get(object).to<QString>(),      "bonjour");
     BOOST_CHECK_EQUAL(metaclass->property("m_enum").get(object).to<MyClass::Enum>(),  MyClass::three);

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: