Ticket #3133: boost_1_42_0_qnx-6.3.2.patch

File boost_1_42_0_qnx-6.3.2.patch, 4.7 KB (added by anonymous, 13 years ago)

Here is qnx specific workaround on va_list

  • boost/serialization/extended_type_info_no_rtti.hpp

    diff -rupN boost_1_42_0/boost/serialization/extended_type_info_no_rtti.hpp boost_1_42_0_qnx-6.3.2/boost/serialization/extended_type_info_no_rtti.hpp
    old new public:  
    124124    }
    125125    virtual void * construct(unsigned int count, ...) const{
    126126        // count up the arguments
     127#ifdef __QNXNTO__
     128        va_list ap;
     129#else
    127130        std::va_list ap;
     131#endif
    128132        va_start(ap, count);
    129133        switch(count){
    130134        case 0:
  • boost/serialization/extended_type_info_typeid.hpp

    diff -rupN boost_1_42_0/boost/serialization/extended_type_info_typeid.hpp boost_1_42_0_qnx-6.3.2/boost/serialization/extended_type_info_typeid.hpp
    old new  
    1919//  See http://www.boost.org for updates, documentation, and revision history.
    2020
    2121#include <typeinfo>
     22#ifdef __QNXNTO__
     23#include <stdarg.h>
     24#else
    2225#include <cstdarg>
     26#endif
    2327#include <cassert>
    2428#include <boost/config.hpp>
    2529
    public:  
    109113    }
    110114    virtual void * construct(unsigned int count, ...) const{
    111115        // count up the arguments
     116#ifdef __QNXNTO__
     117        va_list ap;
     118#else
    112119        std::va_list ap;
     120#endif
    113121        va_start(ap, count);
    114122        switch(count){
    115123        case 0:
  • boost/serialization/factory.hpp

    diff -rupN boost_1_42_0/boost/serialization/factory.hpp boost_1_42_0_qnx-6.3.2/boost/serialization/factory.hpp
    old new  
    1616
    1717//  See http://www.boost.org for updates, documentation, and revision history.
    1818
     19#ifdef __QNXNTO__
     20#include <stdarg.h>
     21#else
    1922#include <cstdarg> // valist
     23#endif
    2024#include <cstddef> // NULL
    2125
    2226#include <boost/preprocessor/control/if.hpp>
    namespace serialization {  
    3438
    3539// default implementation does nothing.
    3640template<class T, int N>
     41#ifdef __QNXNTO__
     42T * factory(va_list){
     43#else
    3744T * factory(std::va_list){
     45#endif
    3846    assert(false);
    3947    // throw exception here?
    4048    return NULL;
    T * factory(std::va_list){  
    4351} // namespace serialization
    4452} // namespace boost
    4553
     54#ifdef __QNXNTO__
     55#define BOOST_SERIALIZATION_FACTORY(N, T, A0, A1, A2, A3) \
     56namespace boost {                                         \
     57namespace serialization {                                 \
     58    template<>                                            \
     59    T * factory<T, N>(va_list ap){                        \
     60        BOOST_PP_IF(BOOST_PP_GREATER(N,0)                 \
     61            ,A0 a0 = va_arg(ap, A0);                      \
     62        ,BOOST_PP_IF(BOOST_PP_GREATER(N,1)                \
     63            ,A1 a1 = va_arg(ap, A1);                      \
     64        ,BOOST_PP_IF(BOOST_PP_GREATER(N,2)                \
     65            ,A2 a2 = va_arg(ap, A2);                      \
     66        ,BOOST_PP_IF(BOOST_PP_GREATER(N,3)                \
     67            ,A3 a3 = va_arg(ap, A3);                      \
     68            ,BOOST_PP_EMPTY()                             \
     69        ))))                                              \
     70        return new T(                                     \
     71            BOOST_PP_IF(BOOST_PP_GREATER(N,0)             \
     72                ,a0                                       \
     73            ,BOOST_PP_IF(BOOST_PP_GREATER(N,1)            \
     74                ,a1                                       \
     75            ,BOOST_PP_IF(BOOST_PP_GREATER(N,2)            \
     76                ,a2                                       \
     77            ,BOOST_PP_IF(BOOST_PP_GREATER(N,3)            \
     78                ,a3                                       \
     79                ,BOOST_PP_EMPTY()                         \
     80            ))))                                          \
     81        );                                                \
     82    }                                                     \
     83}                                                         \
     84}                                                         \
     85/**/
     86#else
    4687#define BOOST_SERIALIZATION_FACTORY(N, T, A0, A1, A2, A3) \
    4788namespace boost {                                         \
    4889namespace serialization {                                 \
    namespace serialization {  
    74115}                                                         \
    75116}                                                         \
    76117/**/
     118#endif
    77119
    78120#define BOOST_SERIALIZATION_FACTORY_4(T, A0, A1, A2, A3) \
    79121    BOOST_SERIALIZATION_FACTORY(4, T, A0, A1, A2, A3)