Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 6, 2008, 5:45:17 PM (16 years ago)
Author:
landauf
Message:

several changes to avoid compiler errors with gcc4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core3/src/util/MultiType.h

    r1716 r1717  
    4242#endif
    4343
    44 enum _UtilExport MT_Type
     44enum MT_Type
    4545{
    4646    MT_null,
     
    132132
    133133    public:
    134         inline                       MultiType()                       : value_(0), type_(MT_null) {}
    135         template <typename V> inline MultiType(const V& value)         : value_(0), type_(MT_null) { this->assignValue(value); }
    136         inline                       MultiType(const MultiType& other) : value_(0), type_(MT_null) { this->setValue(other); }
    137         inline                       MultiType(MT_Type type)           : value_(0), type_(MT_null) { this->setType(type); }
     134        inline                       MultiType()                                  : value_(0), type_(MT_null) {}
     135//        template <typename V> inline MultiType(const V& value)                  : value_(0), type_(MT_null) { this->assignValue(value); }
     136        inline                       MultiType(const char& value)                 : value_(0), type_(MT_null) { this->assignValue(value); }
     137        inline                       MultiType(const unsigned char& value)        : value_(0), type_(MT_null) { this->assignValue(value); }
     138        inline                       MultiType(const short& value)                : value_(0), type_(MT_null) { this->assignValue(value); }
     139        inline                       MultiType(const unsigned short& value)       : value_(0), type_(MT_null) { this->assignValue(value); }
     140        inline                       MultiType(const int& value)                  : value_(0), type_(MT_null) { this->assignValue(value); }
     141        inline                       MultiType(const unsigned int& value)         : value_(0), type_(MT_null) { this->assignValue(value); }
     142        inline                       MultiType(const long& value)                 : value_(0), type_(MT_null) { this->assignValue(value); }
     143        inline                       MultiType(const unsigned long& value)        : value_(0), type_(MT_null) { this->assignValue(value); }
     144        inline                       MultiType(const long long& value)            : value_(0), type_(MT_null) { this->assignValue(value); }
     145        inline                       MultiType(const unsigned long long& value)   : value_(0), type_(MT_null) { this->assignValue(value); }
     146        inline                       MultiType(const float& value)                : value_(0), type_(MT_null) { this->assignValue(value); }
     147        inline                       MultiType(const double& value)               : value_(0), type_(MT_null) { this->assignValue(value); }
     148        inline                       MultiType(const long double& value)          : value_(0), type_(MT_null) { this->assignValue(value); }
     149        inline                       MultiType(const bool& value)                 : value_(0), type_(MT_null) { this->assignValue(value); }
     150        inline                       MultiType(const std::string& value)          : value_(0), type_(MT_null) { this->assignValue(value); }
     151        inline                       MultiType(const orxonox::Vector2& value)     : value_(0), type_(MT_null) { this->assignValue(value); }
     152        inline                       MultiType(const orxonox::Vector3& value)     : value_(0), type_(MT_null) { this->assignValue(value); }
     153        inline                       MultiType(const orxonox::Vector4& value)     : value_(0), type_(MT_null) { this->assignValue(value); }
     154        inline                       MultiType(const orxonox::ColourValue& value) : value_(0), type_(MT_null) { this->assignValue(value); }
     155        inline                       MultiType(const orxonox::Quaternion& value)  : value_(0), type_(MT_null) { this->assignValue(value); }
     156        inline                       MultiType(const orxonox::Radian& value)      : value_(0), type_(MT_null) { this->assignValue(value); }
     157        inline                       MultiType(const orxonox::Degree& value)      : value_(0), type_(MT_null) { this->assignValue(value); }
     158        inline                       MultiType(const MultiType& other)            : value_(0), type_(MT_null) { this->setValue(other); }
     159        inline                       MultiType(MT_Type type)                      : value_(0), type_(MT_null) { this->setType(type); }
    138160        ~MultiType() { if (this->value_) { delete this->value_; } }
    139161
    140162        template <typename V>             inline MultiType& operator=(const V& value)         { this->setValue(value);          return (*this); }
    141         template <typename T, typename V> inline MultiType& operator=(const V& value)         { this->assignValue((T)value);    return (*this); }
    142163        inline                                   MultiType& operator=(const MultiType& other) { this->setValue(other);          return (*this); }
    143164        inline                                   MultiType& operator=(MT_Type type)           { this->setType(type);            return (*this); }
    144165
    145         template <typename V> inline void             setValue(const V& value)         { if (this->value_) { this->value_->setValue(value); } else { this->createNewValueContainer(value); } }
    146         template <typename V> inline void             setValue(V* value)               { if (this->value_) { this->value_->setValue((void*)value); } else { this->createNewValueContainer((void*)value); } }
     166        inline void                                   setValue(const char& value);
     167        inline void                                   setValue(const unsigned char& value);
     168        inline void                                   setValue(const short& value);
     169        inline void                                   setValue(const unsigned short& value);
     170        inline void                                   setValue(const int& value);
     171        inline void                                   setValue(const unsigned int& value);
     172        inline void                                   setValue(const long& value);
     173        inline void                                   setValue(const unsigned long& value);
     174        inline void                                   setValue(const long long& value);
     175        inline void                                   setValue(const unsigned long long& value);
     176        inline void                                   setValue(const float& value);
     177        inline void                                   setValue(const double& value);
     178        inline void                                   setValue(const long double& value);
     179        inline void                                   setValue(const bool& value);
     180        inline void                                   setValue(const std::string& value);
     181        inline void                                   setValue(const orxonox::Vector2& value);
     182        inline void                                   setValue(const orxonox::Vector3& value);
     183        inline void                                   setValue(const orxonox::Vector4& value);
     184        inline void                                   setValue(const orxonox::ColourValue& value);
     185        inline void                                   setValue(const orxonox::Quaternion& value);
     186        inline void                                   setValue(const orxonox::Radian& value);
     187        inline void                                   setValue(const orxonox::Degree& value);
     188        template <typename V> inline void             setValue(V* value)                           { if (this->value_) { this->value_->setValue((void*)value); } else { this->assignValue((void*)value); } }
    147189        inline void                                   setValue(const char* value);
    148         inline void                                   setValue(const MultiType& other) { this->type_ = other.type_; this->value_ = (other.value_) ? other.value_->clone() : 0; }
    149         template <typename T, typename V> inline void setValue(const V& value)         { this->assignValue((T)value); }
    150 
    151         template <typename T> inline void convert() { this->setValue<T>(this->operator T()); }
     190        inline void                                   setValue(const MultiType& other)             { this->type_ = other.type_; this->value_ = (other.value_) ? other.value_->clone() : 0; }
     191        template <typename T, typename V> inline void setValue(const V& value)                     { this->assignValue((T)value); }
     192
     193        template <typename T> inline void convert() { this->setValue<T>((T)(*this)); }
    152194
    153195        inline void                       reset() { if (this->value_) { delete this->value_; this->value_ = 0; } this->type_ = MT_null; }
     
    270312template <> inline bool MultiType::isType<orxonox::Degree>()      const { return (this->type_ == MT_degree);      }
    271313
     314template <> inline void MultiType::convert<std::string>()          { this->setValue<std::string>         (this->operator std::string());          }
     315template <> inline void MultiType::convert<orxonox::Vector2>()     { this->setValue<orxonox::Vector2>    (this->operator orxonox::Vector2());     }
     316template <> inline void MultiType::convert<orxonox::Vector3>()     { this->setValue<orxonox::Vector3>    (this->operator orxonox::Vector3());     }
     317template <> inline void MultiType::convert<orxonox::Vector4>()     { this->setValue<orxonox::Vector4>    (this->operator orxonox::Vector4());     }
     318template <> inline void MultiType::convert<orxonox::ColourValue>() { this->setValue<orxonox::ColourValue>(this->operator orxonox::ColourValue()); }
     319template <> inline void MultiType::convert<orxonox::Quaternion>()  { this->setValue<orxonox::Quaternion> (this->operator orxonox::Quaternion());  }
     320template <> inline void MultiType::convert<orxonox::Radian>()      { this->setValue<orxonox::Radian>     (this->operator orxonox::Radian());      }
     321template <> inline void MultiType::convert<orxonox::Degree>()      { this->setValue<orxonox::Degree>     (this->operator orxonox::Degree());      }
     322
    272323template <> inline void MultiType::convert<const std::string&>()          { this->convert<std::string>();          }
    273324template <> inline void MultiType::convert<const orxonox::Vector2&>()     { this->convert<orxonox::Vector2>();     }
     
    303354template <> void MultiType::createNewValueContainer(const orxonox::Degree& value);
    304355
    305 inline void MultiType::setValue(const char* value) { if (this->value_) { this->value_->setValue(std::string(value)); } else { this->createNewValueContainer(std::string(value)); } }
     356inline void MultiType::setValue(const char& value)                  { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     357inline void MultiType::setValue(const unsigned char& value)         { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     358inline void MultiType::setValue(const short& value)                 { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     359inline void MultiType::setValue(const unsigned short& value)        { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     360inline void MultiType::setValue(const int& value)                   { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     361inline void MultiType::setValue(const unsigned int& value)          { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     362inline void MultiType::setValue(const long& value)                  { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     363inline void MultiType::setValue(const unsigned long& value)         { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     364inline void MultiType::setValue(const long long& value)             { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     365inline void MultiType::setValue(const unsigned long long& value)    { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     366inline void MultiType::setValue(const float& value)                 { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     367inline void MultiType::setValue(const double& value)                { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     368inline void MultiType::setValue(const long double& value)           { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     369inline void MultiType::setValue(const bool& value)                  { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     370inline void MultiType::setValue(const std::string& value)           { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     371inline void MultiType::setValue(const orxonox::Vector2& value)      { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     372inline void MultiType::setValue(const orxonox::Vector3& value)      { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     373inline void MultiType::setValue(const orxonox::Vector4& value)      { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     374inline void MultiType::setValue(const orxonox::ColourValue& value)  { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     375inline void MultiType::setValue(const orxonox::Quaternion& value)   { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     376inline void MultiType::setValue(const orxonox::Radian& value)       { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     377inline void MultiType::setValue(const orxonox::Degree& value)       { if (this->value_) { this->value_->setValue(value); } else { this->assignValue(value); } }
     378inline void MultiType::setValue(const char* value) { if (this->value_) { this->value_->setValue(std::string(value)); } else { this->assignValue(std::string(value)); } }
    306379
    307380/*
Note: See TracChangeset for help on using the changeset viewer.