Changeset 1716 for code/branches/core3/src
- Timestamp:
- Sep 6, 2008, 4:21:56 PM (16 years ago)
- Location:
- code/branches/core3/src
- Files:
-
- 2 added
- 6 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core3/src/core/CommandEvaluation.cc
r1586 r1716 218 218 } 219 219 220 void CommandEvaluation::setEvaluatedParameter(unsigned int index, MultiType Mathparam)220 void CommandEvaluation::setEvaluatedParameter(unsigned int index, MultiType param) 221 221 { 222 222 if (index >= 0 && index < MAX_FUNCTOR_ARGUMENTS) … … 224 224 } 225 225 226 MultiType MathCommandEvaluation::getEvaluatedParameter(unsigned int index) const226 MultiType CommandEvaluation::getEvaluatedParameter(unsigned int index) const 227 227 { 228 228 if (index >= 0 && index < MAX_FUNCTOR_ARGUMENTS) … … 240 240 } 241 241 242 MultiType MathCommandEvaluation::getReturnvalue() const242 MultiType CommandEvaluation::getReturnvalue() const 243 243 { 244 244 if (this->function_) 245 245 return this->function_->getReturnvalue(); 246 246 247 return MultiType Math();247 return MultiType(); 248 248 } 249 249 -
code/branches/core3/src/core/CommandEvaluation.h
r1505 r1716 37 37 #include "ArgumentCompletionListElement.h" 38 38 #include "util/SubString.h" 39 #include "util/MultiType Math.h"39 #include "util/MultiType.h" 40 40 41 41 namespace orxonox … … 81 81 { return (this->additionalParameter_ != "") ? (" " + this->additionalParameter_) : ""; } 82 82 83 void setEvaluatedParameter(unsigned int index, MultiType Mathparam);84 MultiType MathgetEvaluatedParameter(unsigned int index) const;83 void setEvaluatedParameter(unsigned int index, MultiType param); 84 MultiType getEvaluatedParameter(unsigned int index) const; 85 85 86 86 bool hasReturnvalue() const; 87 MultiType MathgetReturnvalue() const;87 MultiType getReturnvalue() const; 88 88 89 89 private: … … 115 115 116 116 bool bEvaluatedParams_; 117 MultiType Mathparam_[5];117 MultiType param_[5]; 118 118 }; 119 119 } -
code/branches/core3/src/core/ConfigValueContainer.cc
r1658 r1716 64 64 @brief Does some special initialization for single config-values. 65 65 */ 66 void ConfigValueContainer::initValue(const MultiType Math& defvalue)66 void ConfigValueContainer::initValue(const MultiType& defvalue) 67 67 { 68 68 this->value_ = defvalue; … … 82 82 for (unsigned int i = 0; i < this->valueVector_.size(); i++) 83 83 { 84 ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, i, this->valueVector_[i] .toString(), this->value_.isA(MT_string));85 this->defvalueStringVector_.push_back(this->valueVector_[i] .toString());84 ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, i, this->valueVector_[i], this->value_.isType(MT_string)); 85 this->defvalueStringVector_.push_back(this->valueVector_[i]); 86 86 } 87 87 … … 103 103 @return True if the new value was successfully assigned 104 104 */ 105 bool ConfigValueContainer::set(const MultiType Math& input)106 { 107 if (this->bIsVector_) 108 { 109 return this->callFunctionWithIndex(&ConfigValueContainer::set, input .toString());105 bool ConfigValueContainer::set(const MultiType& input) 106 { 107 if (this->bIsVector_) 108 { 109 return this->callFunctionWithIndex(&ConfigValueContainer::set, input); 110 110 } 111 111 else … … 113 113 if (this->tset(input)) 114 114 { 115 ConfigFileManager::getInstance()->setValue(this->type_, this->sectionname_, this->varname_, input .toString(), this->value_.isA(MT_string));115 ConfigFileManager::getInstance()->setValue(this->type_, this->sectionname_, this->varname_, input, this->value_.isType(MT_string)); 116 116 return true; 117 117 } … … 126 126 @return True if the new value was successfully assigned 127 127 */ 128 bool ConfigValueContainer::set(unsigned int index, const MultiType Math& input)128 bool ConfigValueContainer::set(unsigned int index, const MultiType& input) 129 129 { 130 130 if (this->bIsVector_) … … 132 132 if (this->tset(index, input)) 133 133 { 134 ConfigFileManager::getInstance()->setValue(this->type_, this->sectionname_, this->varname_, index, input .toString(), this->value_.isA(MT_string));134 ConfigFileManager::getInstance()->setValue(this->type_, this->sectionname_, this->varname_, index, input, this->value_.isType(MT_string)); 135 135 return true; 136 136 } … … 148 148 @return True if the new value was successfully assigned 149 149 */ 150 bool ConfigValueContainer::tset(const MultiTypeMath& input) 151 { 152 if (this->bIsVector_) 153 { 154 return this->callFunctionWithIndex(&ConfigValueContainer::tset, input.toString()); 155 } 156 else 157 { 158 MultiTypeMath temp = this->value_; 159 if (temp.assimilate(input)) 160 { 161 this->value_ = temp; 150 bool ConfigValueContainer::tset(const MultiType& input) 151 { 152 if (this->bIsVector_) 153 { 154 return this->callFunctionWithIndex(&ConfigValueContainer::tset, input); 155 } 156 else 157 { 158 // MultiType temp = this->value_; 159 // if (temp.assimilate(input)) 160 // { 161 // this->value_ = temp; 162 this->value_ = input; 162 163 if (this->identifier_) 163 164 this->identifier_->updateConfigValues(); 164 165 165 166 return true; 166 }167 // } 167 168 } 168 169 return false; … … 175 176 @return True if the new value was successfully assigned 176 177 */ 177 bool ConfigValueContainer::tset(unsigned int index, const MultiType Math& input)178 bool ConfigValueContainer::tset(unsigned int index, const MultiType& input) 178 179 { 179 180 if (this->bIsVector_) … … 189 190 for (unsigned int i = this->valueVector_.size(); i <= index; i++) 190 191 { 191 this->valueVector_.push_back(MultiType Math());192 this->valueVector_.push_back(MultiType()); 192 193 } 193 194 } 194 195 195 MultiTypeMath temp = this->value_; 196 if (temp.assimilate(input)) 197 { 198 this->valueVector_[index] = temp; 196 // MultiType temp = this->value_; 197 // if (temp.assimilate(input)) 198 // { 199 // this->valueVector_[index] = temp; 200 this->valueVector_[index] = input; 199 201 200 202 if (this->identifier_) … … 202 204 203 205 return true; 204 }206 // } 205 207 } 206 208 else … … 216 218 @return True if the new entry was successfully added 217 219 */ 218 bool ConfigValueContainer::add(const MultiType Math& input)220 bool ConfigValueContainer::add(const MultiType& input) 219 221 { 220 222 if (this->bIsVector_) … … 239 241 this->valueVector_.erase(this->valueVector_.begin() + index); 240 242 for (unsigned int i = index; i < this->valueVector_.size(); i++) 241 ConfigFileManager::getInstance()->setValue(this->type_, this->sectionname_, this->varname_, i, this->valueVector_[i], this->value_.is A(MT_string));243 ConfigFileManager::getInstance()->setValue(this->type_, this->sectionname_, this->varname_, i, this->valueVector_[i], this->value_.isType(MT_string)); 242 244 ConfigFileManager::getInstance()->deleteVectorEntries(this->type_, this->sectionname_, this->varname_, this->valueVector_.size()); 243 245 … … 275 277 { 276 278 if (!this->bIsVector_) 277 this->value_ .fromString(ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, this->defvalueString_, this->value_.isA(MT_string)));279 this->value_ = ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, this->defvalueString_, this->value_.isType(MT_string)); 278 280 else 279 281 { … … 283 285 if (i < this->defvalueStringVector_.size()) 284 286 { 285 this->value_ .fromString(ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, i, this->defvalueStringVector_[i], this->value_.isA(MT_string)));287 this->value_ = ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, i, this->defvalueStringVector_[i], this->value_.isType(MT_string)); 286 288 } 287 289 else 288 290 { 289 this->value_ .fromString(ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, i, MultiTypeMath(), this->value_.isA(MT_string)));291 this->value_ = ConfigFileManager::getInstance()->getValue(this->type_, this->sectionname_, this->varname_, i, MultiType(), this->value_.isType(MT_string)); 290 292 } 291 293 … … 301 303 @return The returnvalue of the functioncall 302 304 */ 303 bool ConfigValueContainer::callFunctionWithIndex(bool (ConfigValueContainer::* function) (unsigned int, const MultiType Math&), const std::string& input)305 bool ConfigValueContainer::callFunctionWithIndex(bool (ConfigValueContainer::* function) (unsigned int, const MultiType&), const std::string& input) 304 306 { 305 307 SubString token(input, " ", SubString::WhiteSpaces, true, '\\', false, '"', false, '(', ')', false, '\0'); -
code/branches/core3/src/core/ConfigValueContainer.h
r1611 r1716 50 50 51 51 #include "util/Math.h" 52 #include "util/MultiType Math.h"52 #include "util/MultiType.h" 53 53 #include "ConfigFileManager.h" 54 54 … … 124 124 this->value_ = V(); 125 125 for (unsigned int i = 0; i < defvalue.size(); i++) 126 this->valueVector_.push_back(MultiType Math(defvalue[i]));126 this->valueVector_.push_back(MultiType(defvalue[i])); 127 127 128 128 this->initVector(); … … 247 247 } 248 248 249 bool set(const MultiType Math& input);250 bool tset(const MultiType Math& input);251 252 bool set(unsigned int index, const MultiType Math& input);253 bool tset(unsigned int index, const MultiType Math& input);254 bool add(const MultiType Math& input);249 bool set(const MultiType& input); 250 bool tset(const MultiType& input); 251 252 bool set(unsigned int index, const MultiType& input); 253 bool tset(unsigned int index, const MultiType& input); 254 bool add(const MultiType& input); 255 255 bool remove(unsigned int index); 256 256 … … 260 260 /** @brief Converts the config-value to a string. @return The string */ 261 261 inline std::string toString() const 262 { return this->value_ .toString(); }262 { return this->value_; } 263 263 /** @brief Returns the typename of the assigned config-value. @return The typename */ 264 264 inline std::string getTypename() const … … 267 267 private: 268 268 void init(ConfigFileType type, Identifier* identifier, const std::string& varname); 269 void initValue(const MultiType Math& defvalue);269 void initValue(const MultiType& defvalue); 270 270 void initVector(); 271 bool callFunctionWithIndex(bool (ConfigValueContainer::* function) (unsigned int, const MultiType Math&), const std::string& input);271 bool callFunctionWithIndex(bool (ConfigValueContainer::* function) (unsigned int, const MultiType&), const std::string& input); 272 272 273 273 bool bIsVector_; //!< True if the container contains a std::vector … … 280 280 std::vector<std::string> defvalueStringVector_; //!< A vector, containg the strings of the default-values in case we're storing a vector 281 281 282 MultiType Mathvalue_; //!< The value283 std::vector<MultiType Math>valueVector_; //!< A vector, containg the values in case we're storing a vector282 MultiType value_; //!< The value 283 std::vector<MultiType> valueVector_; //!< A vector, containg the values in case we're storing a vector 284 284 285 285 bool bAddedDescription_; //!< True if a description was added -
code/branches/core3/src/core/ConsoleCommand.h
r1594 r1716 93 93 inline ConsoleCommand& descriptionReturnvalue(const std::string& description) 94 94 { this->ExecutorStatic::setDescriptionReturnvalue(description); return (*this); } 95 inline ConsoleCommand& defaultValues(const MultiType Math& param1)95 inline ConsoleCommand& defaultValues(const MultiType& param1) 96 96 { this->ExecutorStatic::setDefaultValues(param1); return (*this); } 97 inline ConsoleCommand& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2)97 inline ConsoleCommand& defaultValues(const MultiType& param1, const MultiType& param2) 98 98 { this->ExecutorStatic::setDefaultValues(param1, param2); return (*this); } 99 inline ConsoleCommand& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3)99 inline ConsoleCommand& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3) 100 100 { this->ExecutorStatic::setDefaultValues(param1, param2, param3); return (*this); } 101 inline ConsoleCommand& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4)101 inline ConsoleCommand& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) 102 102 { this->ExecutorStatic::setDefaultValues(param1, param2, param3, param4); return (*this); } 103 inline ConsoleCommand& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5)103 inline ConsoleCommand& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) 104 104 { this->ExecutorStatic::setDefaultValues(param1, param2, param3, param4, param5); return (*this); } 105 inline ConsoleCommand& defaultValue(unsigned int index, const MultiType Math& param)105 inline ConsoleCommand& defaultValue(unsigned int index, const MultiType& param) 106 106 { this->ExecutorStatic::setDefaultValue(index, param); return (*this); } 107 107 -
code/branches/core3/src/core/Executor.cc
r1505 r1716 65 65 } 66 66 67 bool Executor::evaluate(const std::string& params, MultiType Mathparam[5], const std::string& delimiter) const67 bool Executor::evaluate(const std::string& params, MultiType param[5], const std::string& delimiter) const 68 68 { 69 69 unsigned int paramCount = this->functor_->getParamCount(); … … 171 171 } 172 172 173 Executor& Executor::setDefaultValues(const MultiType Math& param1)174 { 175 this->defaultValue_[0] = param1; 176 this->bAddedDefaultValue_[0] = true; 177 178 return (*this); 179 } 180 181 Executor& Executor::setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2)182 { 183 this->defaultValue_[0] = param1; 184 this->bAddedDefaultValue_[0] = true; 185 this->defaultValue_[1] = param2; 186 this->bAddedDefaultValue_[1] = true; 187 188 return (*this); 189 } 190 191 Executor& Executor::setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3)173 Executor& Executor::setDefaultValues(const MultiType& param1) 174 { 175 this->defaultValue_[0] = param1; 176 this->bAddedDefaultValue_[0] = true; 177 178 return (*this); 179 } 180 181 Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2) 182 { 183 this->defaultValue_[0] = param1; 184 this->bAddedDefaultValue_[0] = true; 185 this->defaultValue_[1] = param2; 186 this->bAddedDefaultValue_[1] = true; 187 188 return (*this); 189 } 190 191 Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3) 192 192 { 193 193 this->defaultValue_[0] = param1; … … 201 201 } 202 202 203 Executor& Executor::setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4)203 Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) 204 204 { 205 205 this->defaultValue_[0] = param1; … … 215 215 } 216 216 217 Executor& Executor::setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5)217 Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) 218 218 { 219 219 this->defaultValue_[0] = param1; … … 231 231 } 232 232 233 Executor& Executor::setDefaultValue(unsigned int index, const MultiType Math& param)233 Executor& Executor::setDefaultValue(unsigned int index, const MultiType& param) 234 234 { 235 235 if (index >= 0 && index < MAX_FUNCTOR_ARGUMENTS) -
code/branches/core3/src/core/Executor.h
r1586 r1716 64 64 { \ 65 65 COUT(5) << "Calling Executor " << this->name_ << " through parser with one parameter, using whole string: " << params << std::endl; \ 66 EXECUTOR_PARSE_FUNCTORCALL(mode)(EXECUTOR_PARSE_OBJECT(mode, 1) MultiType Math(params)); \66 EXECUTOR_PARSE_FUNCTORCALL(mode)(EXECUTOR_PARSE_OBJECT(mode, 1) MultiType(params)); \ 67 67 } \ 68 68 else if (this->bAddedDefaultValue_[0]) \ … … 90 90 } \ 91 91 \ 92 MultiType Mathparam[MAX_FUNCTOR_ARGUMENTS]; \92 MultiType param[MAX_FUNCTOR_ARGUMENTS]; \ 93 93 COUT(5) << "Calling Executor " << this->name_ << " through parser with " << paramCount << " parameters, using " << tokens.size() << " tokens ("; \ 94 94 for (unsigned int i = 0; i < tokens.size() && i < MAX_FUNCTOR_ARGUMENTS; i++) \ … … 145 145 inline void operator()() const 146 146 { (*this->functor_)(this->defaultValue_[0], this->defaultValue_[1], this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 147 inline void operator()(const MultiType Math& param1) const147 inline void operator()(const MultiType& param1) const 148 148 { (*this->functor_)(param1, this->defaultValue_[1], this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 149 inline void operator()(const MultiType Math& param1, const MultiTypeMath& param2) const149 inline void operator()(const MultiType& param1, const MultiType& param2) const 150 150 { (*this->functor_)(param1, param2, this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 151 inline void operator()(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3) const151 inline void operator()(const MultiType& param1, const MultiType& param2, const MultiType& param3) const 152 152 { (*this->functor_)(param1, param2, param3, this->defaultValue_[3], this->defaultValue_[4]); } 153 inline void operator()(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4) const153 inline void operator()(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) const 154 154 { (*this->functor_)(param1, param2, param3, param4, this->defaultValue_[4]); } 155 inline void operator()(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5) const155 inline void operator()(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) const 156 156 { (*this->functor_)(param1, param2, param3, param4, param5); } 157 157 158 158 bool parse(const std::string& params, const std::string& delimiter = " ") const; 159 159 160 bool evaluate(const std::string& params, MultiType Mathparam[5], const std::string& delimiter = " ") const;160 bool evaluate(const std::string& params, MultiType param[5], const std::string& delimiter = " ") const; 161 161 162 162 Executor& setDescription(const std::string& description); … … 177 177 inline FunctionType getType() const 178 178 { return this->functor_->getType(); } 179 inline MultiType MathgetReturnvalue() const179 inline MultiType getReturnvalue() const 180 180 { return this->functor_->getReturnvalue(); } 181 181 inline std::string getTypenameParam(unsigned int param) const … … 189 189 { return this->name_; } 190 190 191 Executor& setDefaultValues(const MultiType Math& param1);192 Executor& setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2);193 Executor& setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3);194 Executor& setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4);195 Executor& setDefaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5);196 Executor& setDefaultValue(unsigned int index, const MultiType Math& param);197 198 inline MultiType MathgetDefaultValue(unsigned int index) const191 Executor& setDefaultValues(const MultiType& param1); 192 Executor& setDefaultValues(const MultiType& param1, const MultiType& param2); 193 Executor& setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3); 194 Executor& setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4); 195 Executor& setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5); 196 Executor& setDefaultValue(unsigned int index, const MultiType& param); 197 198 inline MultiType getDefaultValue(unsigned int index) const 199 199 { 200 200 if (index >= 0 && index < MAX_FUNCTOR_ARGUMENTS) … … 216 216 Functor* functor_; 217 217 std::string name_; 218 MultiType MathdefaultValue_[MAX_FUNCTOR_ARGUMENTS];218 MultiType defaultValue_[MAX_FUNCTOR_ARGUMENTS]; 219 219 bool bAddedDefaultValue_[MAX_FUNCTOR_ARGUMENTS]; 220 220 … … 245 245 inline void operator()(T* object) const 246 246 { (*((FunctorMember<T>*)this->functor_))(object, this->defaultValue_[0], this->defaultValue_[1], this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 247 inline void operator()(T* object, const MultiType Math& param1) const247 inline void operator()(T* object, const MultiType& param1) const 248 248 { (*((FunctorMember<T>*)this->functor_))(object, param1, this->defaultValue_[1], this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 249 inline void operator()(T* object, const MultiType Math& param1, const MultiTypeMath& param2) const249 inline void operator()(T* object, const MultiType& param1, const MultiType& param2) const 250 250 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 251 inline void operator()(T* object, const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3) const251 inline void operator()(T* object, const MultiType& param1, const MultiType& param2, const MultiType& param3) const 252 252 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, param3, this->defaultValue_[3], this->defaultValue_[4]); } 253 inline void operator()(T* object, const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4) const253 inline void operator()(T* object, const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) const 254 254 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, param3, param4, this->defaultValue_[4]); } 255 inline void operator()(T* object, const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5) const255 inline void operator()(T* object, const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) const 256 256 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, param3, param4, param5); } 257 257 … … 259 259 inline void operator()(const T* object) const 260 260 { (*((FunctorMember<T>*)this->functor_))(object, this->defaultValue_[0], this->defaultValue_[1], this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 261 inline void operator()(const T* object, const MultiType Math& param1) const261 inline void operator()(const T* object, const MultiType& param1) const 262 262 { (*((FunctorMember<T>*)this->functor_))(object, param1, this->defaultValue_[1], this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 263 inline void operator()(const T* object, const MultiType Math& param1, const MultiTypeMath& param2) const263 inline void operator()(const T* object, const MultiType& param1, const MultiType& param2) const 264 264 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, this->defaultValue_[2], this->defaultValue_[3], this->defaultValue_[4]); } 265 inline void operator()(const T* object, const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3) const265 inline void operator()(const T* object, const MultiType& param1, const MultiType& param2, const MultiType& param3) const 266 266 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, param3, this->defaultValue_[3], this->defaultValue_[4]); } 267 inline void operator()(const T* object, const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4) const267 inline void operator()(const T* object, const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) const 268 268 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, param3, param4, this->defaultValue_[4]); } 269 inline void operator()(const T* object, const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5) const269 inline void operator()(const T* object, const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) const 270 270 { (*((FunctorMember<T>*)this->functor_))(object, param1, param2, param3, param4, param5); } 271 271 -
code/branches/core3/src/core/Functor.h
r1592 r1716 33 33 #include "CorePrereqs.h" 34 34 35 #include "util/MultiType Math.h"35 #include "util/MultiType.h" 36 36 #include "util/Debug.h" 37 37 … … 95 95 virtual ~Functor() {} 96 96 97 virtual void operator()(const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) = 0;97 virtual void operator()(const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) = 0; 98 98 99 99 inline unsigned int getParamCount() const { return this->numParams_; } 100 100 inline bool hasReturnvalue() const { return this->hasReturnValue_; } 101 101 inline FunctionType getType() const { return this->type_; } 102 inline MultiType MathgetReturnvalue() const { return this->returnedValue_; }102 inline MultiType getReturnvalue() const { return this->returnedValue_; } 103 103 104 104 std::string getTypenameParam(unsigned int param) const { return (param >= 0 && param < 5) ? this->typeParam_[param] : ""; } 105 105 std::string getTypenameReturnvalue() const { return this->typeReturnvalue_; } 106 106 107 virtual void evaluateParam(unsigned int index, MultiType Math& param) const = 0;107 virtual void evaluateParam(unsigned int index, MultiType& param) const = 0; 108 108 109 109 protected: … … 111 111 bool hasReturnValue_; 112 112 FunctionType type_; 113 MultiType MathreturnedValue_;113 MultiType returnedValue_; 114 114 115 115 std::string typeReturnvalue_; … … 121 121 public: 122 122 virtual ~FunctorStatic() {} 123 virtual void operator()(const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) = 0;123 virtual void operator()(const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) = 0; 124 124 }; 125 125 … … 136 136 virtual ~FunctorMember() {} 137 137 138 virtual void operator()(T* object, const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) = 0;139 virtual void operator()(const T* object, const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) = 0;140 141 virtual void operator()(const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null)138 virtual void operator()(T* object, const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) = 0; 139 virtual void operator()(const T* object, const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) = 0; 140 141 virtual void operator()(const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) 142 142 { 143 143 if (this->bConstObject_) … … 280 280 281 281 282 282 /* 283 283 #define FUNCTOR_EVALUATE_PARAM(numparams) FUNCTOR_EVALUATE_PARAM##numparams 284 284 #define FUNCTOR_EVALUATE_PARAM0 … … 303 303 else if (index == 3) { P4 temp = param; param = temp; } \ 304 304 else if (index == 4) { P5 temp = param; param = temp; } 305 305 */ 306 #define FUNCTOR_EVALUATE_PARAM(numparams) FUNCTOR_EVALUATE_PARAM##numparams 307 #define FUNCTOR_EVALUATE_PARAM0 308 #define FUNCTOR_EVALUATE_PARAM1 \ 309 if (index == 0) { param.convert<P1>(); } 310 #define FUNCTOR_EVALUATE_PARAM2 \ 311 if (index == 0) { param.convert<P1>(); } \ 312 else if (index == 1) { param.convert<P2>(); } 313 #define FUNCTOR_EVALUATE_PARAM3 \ 314 if (index == 0) { param.convert<P1>(); } \ 315 else if (index == 1) { param.convert<P2>(); } \ 316 else if (index == 2) { param.convert<P3>(); } 317 #define FUNCTOR_EVALUATE_PARAM4 \ 318 if (index == 0) { param.convert<P1>(); } \ 319 else if (index == 1) { param.convert<P2>(); } \ 320 else if (index == 2) { param.convert<P3>(); } \ 321 else if (index == 3) { param.convert<P4>(); } 322 #define FUNCTOR_EVALUATE_PARAM5 \ 323 if (index == 0) { param.convert<P1>(); } \ 324 else if (index == 1) { param.convert<P2>(); } \ 325 else if (index == 2) { param.convert<P3>(); } \ 326 else if (index == 3) { param.convert<P4>(); } \ 327 else if (index == 4) { param.convert<P5>(); } 306 328 307 329 … … 324 346 } \ 325 347 \ 326 void operator()(const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) \348 void operator()(const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) \ 327 349 { \ 328 350 FUNCTOR_STORE_RETURNVALUE(returnvalue, (*this->functionPointer_)(FUNCTOR_FUNCTION_CALL(numparams))); \ 329 351 } \ 330 352 \ 331 virtual void evaluateParam(unsigned int index, MultiType Math& param) const \353 virtual void evaluateParam(unsigned int index, MultiType& param) const \ 332 354 { \ 333 355 FUNCTOR_EVALUATE_PARAM(numparams); \ … … 362 384 } \ 363 385 \ 364 void operator()(T* object, const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) \386 void operator()(T* object, const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) \ 365 387 { \ 366 388 FUNCTOR_STORE_RETURNVALUE(returnvalue, (*object.*this->functionPointer_)(FUNCTOR_FUNCTION_CALL(numparams))); \ 367 389 } \ 368 390 \ 369 void operator()(const T* object, const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) \391 void operator()(const T* object, const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) \ 370 392 { \ 371 393 COUT(1) << "An error occurred in Functor.h:" << std::endl; \ … … 373 395 } \ 374 396 \ 375 virtual void evaluateParam(unsigned int index, MultiType Math& param) const \397 virtual void evaluateParam(unsigned int index, MultiType& param) const \ 376 398 { \ 377 399 FUNCTOR_EVALUATE_PARAM(numparams); \ … … 395 417 } \ 396 418 \ 397 void operator()(T* object, const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) \419 void operator()(T* object, const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) \ 398 420 { \ 399 421 FUNCTOR_STORE_RETURNVALUE(returnvalue, (*object.*this->functionPointer_)(FUNCTOR_FUNCTION_CALL(numparams))); \ 400 422 } \ 401 423 \ 402 void operator()(const T* object, const MultiType Math& param1 = MT_null, const MultiTypeMath& param2 = MT_null, const MultiTypeMath& param3 = MT_null, const MultiTypeMath& param4 = MT_null, const MultiTypeMath& param5 = MT_null) \424 void operator()(const T* object, const MultiType& param1 = MT_null, const MultiType& param2 = MT_null, const MultiType& param3 = MT_null, const MultiType& param4 = MT_null, const MultiType& param5 = MT_null) \ 403 425 { \ 404 426 FUNCTOR_STORE_RETURNVALUE(returnvalue, (*object.*this->functionPointer_)(FUNCTOR_FUNCTION_CALL(numparams))); \ 405 427 } \ 406 428 \ 407 virtual void evaluateParam(unsigned int index, MultiType Math& param) const \429 virtual void evaluateParam(unsigned int index, MultiType& param) const \ 408 430 { \ 409 431 FUNCTOR_EVALUATE_PARAM(numparams); \ -
code/branches/core3/src/core/XMLPort.h
r1610 r1716 34 34 #include "util/Debug.h" 35 35 #include "util/XMLIncludes.h" 36 #include "util/MultiType Math.h"36 #include "util/MultiType.h" 37 37 #include "tinyxml/ticpp.h" 38 38 #include "Executor.h" … … 107 107 virtual const std::string& getDescription() = 0; 108 108 109 virtual XMLPortParamContainer& defaultValue(unsigned int index, const MultiType Math& param) = 0;110 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1) = 0;111 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2) = 0;112 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3) = 0;113 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4) = 0;114 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5) = 0;109 virtual XMLPortParamContainer& defaultValue(unsigned int index, const MultiType& param) = 0; 110 virtual XMLPortParamContainer& defaultValues(const MultiType& param1) = 0; 111 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2) = 0; 112 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3) = 0; 113 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) = 0; 114 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) = 0; 115 115 116 116 protected: … … 197 197 { return this->loadexecutor_->getDescription(); } 198 198 199 virtual XMLPortParamContainer& defaultValue(unsigned int index, const MultiType Math& param)199 virtual XMLPortParamContainer& defaultValue(unsigned int index, const MultiType& param) 200 200 { 201 201 if (!this->loadexecutor_->defaultValueSet(index)) … … 203 203 return this->portIfWaitingForDefaultValues(this->parseResult_, this->parseParams_); 204 204 } 205 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1)205 virtual XMLPortParamContainer& defaultValues(const MultiType& param1) 206 206 { 207 207 if (!this->loadexecutor_->defaultValueSet(0)) … … 209 209 return this->portIfWaitingForDefaultValues(this->parseResult_, this->parseParams_); 210 210 } 211 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2)211 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2) 212 212 { 213 213 if ((!this->loadexecutor_->defaultValueSet(0)) || (!this->loadexecutor_->defaultValueSet(1))) … … 215 215 return this->portIfWaitingForDefaultValues(this->parseResult_, this->parseParams_); 216 216 } 217 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3)217 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3) 218 218 { 219 219 if ((!this->loadexecutor_->defaultValueSet(0)) || (!this->loadexecutor_->defaultValueSet(1)) || (!this->loadexecutor_->defaultValueSet(2))) … … 221 221 return this->portIfWaitingForDefaultValues(this->parseResult_, this->parseParams_); 222 222 } 223 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4)223 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4) 224 224 { 225 225 if ((!this->loadexecutor_->defaultValueSet(0)) || (!this->loadexecutor_->defaultValueSet(1)) || (!this->loadexecutor_->defaultValueSet(2)) || (!this->loadexecutor_->defaultValueSet(3))) … … 227 227 return this->portIfWaitingForDefaultValues(this->parseResult_, this->parseParams_); 228 228 } 229 virtual XMLPortParamContainer& defaultValues(const MultiType Math& param1, const MultiTypeMath& param2, const MultiTypeMath& param3, const MultiTypeMath& param4, const MultiTypeMath& param5)229 virtual XMLPortParamContainer& defaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5) 230 230 { 231 231 if ((!this->loadexecutor_->defaultValueSet(0)) || (!this->loadexecutor_->defaultValueSet(1)) || (!this->loadexecutor_->defaultValueSet(2)) || (!this->loadexecutor_->defaultValueSet(3)) || (!this->loadexecutor_->defaultValueSet(4))) -
code/branches/core3/src/core/input/InputManager.cc
r1596 r1716 321 321 if (joySticksSize_) 322 322 { 323 std::vector< MultiTypeMath> coeffPos;324 std::vector< MultiTypeMath> coeffNeg;325 std::vector< MultiTypeMath> zero;323 std::vector<double> coeffPos; 324 std::vector<double> coeffNeg; 325 std::vector<int> zero; 326 326 coeffPos.resize(24); 327 327 coeffNeg.resize(24); -
code/branches/core3/src/util/CMakeLists.txt
r1606 r1716 5 5 ExprParser.cc 6 6 Math.cc 7 MultiTypePrimitive.cc 8 MultiTypeString.cc 9 MultiTypeMath.cc 7 MultiType.cc 10 8 OutputBuffer.cc 11 9 OutputHandler.cc -
code/branches/core3/src/util/Convert.h
r1586 r1716 43 43 #include "Debug.h" 44 44 #include "SubString.h" 45 #include "MultiTypeMath.h"45 //#include "MultiTypeMath.h" 46 46 47 47 // disable annoying warning about forcing value to boolean … … 323 323 // MULTITYPES // 324 324 //////////////// 325 325 /* 326 326 // convert from MultiTypePrimitive 327 327 template <class ToType> … … 403 403 } 404 404 }; 405 405 */ 406 406 407 407 //////////////////// -
code/branches/core3/src/util/MultiType.h
r1505 r1716 25 25 * ... 26 26 * 27 * Inspiration: MultiType by Benjamin Grauer28 27 */ 29 28 … … 33 32 #include "UtilPrereqs.h" 34 33 35 enum _UtilExport MultiType 34 #include <boost/static_assert.hpp> 35 36 #include "Math.h" 37 38 // disable annoying warning about multiple assignment operators 39 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC 40 #pragma warning(push) 41 #pragma warning(disable:4522) 42 #endif 43 44 enum _UtilExport MT_Type 36 45 { 37 46 MT_null, 38 MT_void,39 MT_int,40 MT_uint,41 47 MT_char, 42 48 MT_uchar, 43 49 MT_short, 44 50 MT_ushort, 51 MT_int, 52 MT_uint, 45 53 MT_long, 46 54 MT_ulong, 55 MT_longlong, 56 MT_ulonglong, 47 57 MT_float, 48 58 MT_double, 49 59 MT_longdouble, 50 60 MT_bool, 51 MT_ constchar,61 MT_void, 52 62 MT_string, 53 MT_xmlelement,54 63 MT_vector2, 55 64 MT_vector3, … … 57 66 MT_colourvalue, 58 67 MT_quaternion, 59 MT_ degree,60 MT_ radian68 MT_radian, 69 MT_degree 61 70 }; 62 71 63 union _UtilExport MultiTypeValue72 class _UtilExport MultiType 64 73 { 65 void* void_; 66 int int_; 67 unsigned int uint_; 68 char char_; 69 unsigned char uchar_; 70 short short_; 71 unsigned short ushort_; 72 long long_; 73 unsigned long ulong_; 74 float float_; 75 double double_; 76 long double longdouble_; 77 bool bool_; 74 friend std::ostream& operator<<(std::ostream& outstream, const MultiType& mt); 75 76 struct _UtilExport MT_ValueBase 77 { 78 virtual ~MT_ValueBase() {} 79 80 virtual MT_ValueBase* clone() const = 0; 81 82 virtual void setValue(const char& value) = 0; 83 virtual void setValue(const unsigned char& value) = 0; 84 virtual void setValue(const short& value) = 0; 85 virtual void setValue(const unsigned short& value) = 0; 86 virtual void setValue(const int& value) = 0; 87 virtual void setValue(const unsigned int& value) = 0; 88 virtual void setValue(const long& value) = 0; 89 virtual void setValue(const unsigned long& value) = 0; 90 virtual void setValue(const long long& value) = 0; 91 virtual void setValue(const unsigned long long& value) = 0; 92 virtual void setValue(const float& value) = 0; 93 virtual void setValue(const double& value) = 0; 94 virtual void setValue(const long double& value) = 0; 95 virtual void setValue(const bool& value) = 0; 96 virtual void setValue( void* const& value) = 0; 97 virtual void setValue(const std::string& value) = 0; 98 virtual void setValue(const orxonox::Vector2& value) = 0; 99 virtual void setValue(const orxonox::Vector3& value) = 0; 100 virtual void setValue(const orxonox::Vector4& value) = 0; 101 virtual void setValue(const orxonox::ColourValue& value) = 0; 102 virtual void setValue(const orxonox::Quaternion& value) = 0; 103 virtual void setValue(const orxonox::Radian& value) = 0; 104 virtual void setValue(const orxonox::Degree& value) = 0; 105 106 virtual operator char() const = 0; 107 virtual operator unsigned char() const = 0; 108 virtual operator short() const = 0; 109 virtual operator unsigned short() const = 0; 110 virtual operator int() const = 0; 111 virtual operator unsigned int() const = 0; 112 virtual operator long() const = 0; 113 virtual operator unsigned long() const = 0; 114 virtual operator long long() const = 0; 115 virtual operator unsigned long long() const = 0; 116 virtual operator float() const = 0; 117 virtual operator double() const = 0; 118 virtual operator long double() const = 0; 119 virtual operator bool() const = 0; 120 virtual operator void*() const = 0; 121 virtual operator std::string() const = 0; 122 virtual operator orxonox::Vector2() const = 0; 123 virtual operator orxonox::Vector3() const = 0; 124 virtual operator orxonox::Vector4() const = 0; 125 virtual operator orxonox::ColourValue() const = 0; 126 virtual operator orxonox::Quaternion() const = 0; 127 virtual operator orxonox::Radian() const = 0; 128 virtual operator orxonox::Degree() const = 0; 129 130 virtual void toString(std::ostream& outstream) const = 0; 131 }; 132 133 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); } 138 ~MultiType() { if (this->value_) { delete this->value_; } } 139 140 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); } 142 inline MultiType& operator=(const MultiType& other) { this->setValue(other); return (*this); } 143 inline MultiType& operator=(MT_Type type) { this->setType(type); return (*this); } 144 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); } } 147 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()); } 152 153 inline void reset() { if (this->value_) { delete this->value_; this->value_ = 0; } this->type_ = MT_null; } 154 155 template <typename T> inline void setType() { this->assignValue(T()); } 156 inline void setType(const MultiType& other) { this->setType(other.type_); } 157 void setType(MT_Type type); 158 159 operator char() const; 160 operator unsigned char() const; 161 operator short() const; 162 operator unsigned short() const; 163 operator int() const; 164 operator unsigned int() const; 165 operator long() const; 166 operator unsigned long() const; 167 operator long long() const; 168 operator unsigned long long() const; 169 operator float() const; 170 operator double() const; 171 operator long double() const; 172 operator bool() const; 173 operator void*() const; 174 operator std::string() const; 175 operator orxonox::Vector2() const; 176 operator orxonox::Vector3() const; 177 operator orxonox::Vector4() const; 178 operator orxonox::ColourValue() const; 179 operator orxonox::Quaternion() const; 180 operator orxonox::Radian() const; 181 operator orxonox::Degree() const; 182 template <class T> operator T*() const { return ((T*)this->operator void*()); } 183 184 inline void getValue(char* value) const { if (this->value_) { (*value) = (*this->value_); } } 185 inline void getValue(unsigned char* value) const { if (this->value_) { (*value) = (*this->value_); } } 186 inline void getValue(short* value) const { if (this->value_) { (*value) = (*this->value_); } } 187 inline void getValue(unsigned short* value) const { if (this->value_) { (*value) = (*this->value_); } } 188 inline void getValue(int* value) const { if (this->value_) { (*value) = (*this->value_); } } 189 inline void getValue(unsigned int* value) const { if (this->value_) { (*value) = (*this->value_); } } 190 inline void getValue(long* value) const { if (this->value_) { (*value) = (*this->value_); } } 191 inline void getValue(unsigned long* value) const { if (this->value_) { (*value) = (*this->value_); } } 192 inline void getValue(long long* value) const { if (this->value_) { (*value) = (*this->value_); } } 193 inline void getValue(unsigned long long* value) const { if (this->value_) { (*value) = (*this->value_); } } 194 inline void getValue(float* value) const { if (this->value_) { (*value) = (*this->value_); } } 195 inline void getValue(double* value) const { if (this->value_) { (*value) = (*this->value_); } } 196 inline void getValue(long double* value) const { if (this->value_) { (*value) = (*this->value_); } } 197 inline void getValue(bool* value) const { if (this->value_) { (*value) = (*this->value_); } } 198 inline void getValue(void* value) const { if (this->value_) { value = (*this->value_); } } 199 inline void getValue(std::string* value) const { if (this->value_) { (*value) = this->value_->operator std::string(); } } 200 inline void getValue(orxonox::Vector2* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::Vector2(); } } 201 inline void getValue(orxonox::Vector3* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::Vector3(); } } 202 inline void getValue(orxonox::Vector4* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::Vector4(); } } 203 inline void getValue(orxonox::ColourValue* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::ColourValue(); } } 204 inline void getValue(orxonox::Quaternion* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::Quaternion(); } } 205 inline void getValue(orxonox::Radian* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::Radian(); } } 206 inline void getValue(orxonox::Degree* value) const { if (this->value_) { (*value) = this->value_->operator orxonox::Degree(); } } 207 208 inline MT_Type getType() const { return this->type_; } 209 inline bool isType(MT_Type type) const { return (this->type_ == type); } 210 template <typename T> inline bool isType() const { return false; } 211 std::string getTypename() const; 212 213 inline std::string toString() const { return this->operator std::string(); } 214 215 private: 216 inline void assignValue(const char& value) { if (this->value_ && this->type_ == MT_char) { this->value_->setValue(value); } else { this->changeValueContainer<char>(value); this->type_ = MT_char; } } 217 inline void assignValue(const unsigned char& value) { if (this->value_ && this->type_ == MT_uchar) { this->value_->setValue(value); } else { this->changeValueContainer<unsigned char>(value); this->type_ = MT_uchar; } } 218 inline void assignValue(const short& value) { if (this->value_ && this->type_ == MT_short) { this->value_->setValue(value); } else { this->changeValueContainer<short>(value); this->type_ = MT_short; } } 219 inline void assignValue(const unsigned short& value) { if (this->value_ && this->type_ == MT_ushort) { this->value_->setValue(value); } else { this->changeValueContainer<unsigned short>(value); this->type_ = MT_ushort; } } 220 inline void assignValue(const int& value) { if (this->value_ && this->type_ == MT_int) { this->value_->setValue(value); } else { this->changeValueContainer<int>(value); this->type_ = MT_int; } } 221 inline void assignValue(const unsigned int& value) { if (this->value_ && this->type_ == MT_uint) { this->value_->setValue(value); } else { this->changeValueContainer<unsigned int>(value); this->type_ = MT_uint; } } 222 inline void assignValue(const long& value) { if (this->value_ && this->type_ == MT_long) { this->value_->setValue(value); } else { this->changeValueContainer<long>(value); this->type_ = MT_long; } } 223 inline void assignValue(const unsigned long& value) { if (this->value_ && this->type_ == MT_ulong) { this->value_->setValue(value); } else { this->changeValueContainer<unsigned long>(value); this->type_ = MT_ulong; } } 224 inline void assignValue(const long long& value) { if (this->value_ && this->type_ == MT_longlong) { this->value_->setValue(value); } else { this->changeValueContainer<long long>(value); this->type_ = MT_longlong; } } 225 inline void assignValue(const unsigned long long& value) { if (this->value_ && this->type_ == MT_ulonglong) { this->value_->setValue(value); } else { this->changeValueContainer<unsigned long long>(value); this->type_ = MT_ulonglong; } } 226 inline void assignValue(const float& value) { if (this->value_ && this->type_ == MT_float) { this->value_->setValue(value); } else { this->changeValueContainer<float>(value); this->type_ = MT_float; } } 227 inline void assignValue(const double& value) { if (this->value_ && this->type_ == MT_double) { this->value_->setValue(value); } else { this->changeValueContainer<double>(value); this->type_ = MT_double; } } 228 inline void assignValue(const long double& value) { if (this->value_ && this->type_ == MT_longdouble) { this->value_->setValue(value); } else { this->changeValueContainer<long double>(value); this->type_ = MT_longdouble; } } 229 inline void assignValue(const bool& value) { if (this->value_ && this->type_ == MT_bool) { this->value_->setValue(value); } else { this->changeValueContainer<bool>(value); this->type_ = MT_bool; } } 230 inline void assignValue( void* const& value) { if (this->value_ && this->type_ == MT_void) { this->value_->setValue(value); } else { this->changeValueContainer<void*>(value); this->type_ = MT_void; } } 231 inline void assignValue(const std::string& value) { if (this->value_ && this->type_ == MT_string) { this->value_->setValue(value); } else { this->changeValueContainer<std::string>(value); this->type_ = MT_string; } } 232 inline void assignValue(const orxonox::Vector2& value) { if (this->value_ && this->type_ == MT_vector2) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Vector2>(value); this->type_ = MT_vector2; } } 233 inline void assignValue(const orxonox::Vector3& value) { if (this->value_ && this->type_ == MT_vector3) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Vector3>(value); this->type_ = MT_vector3; } } 234 inline void assignValue(const orxonox::Vector4& value) { if (this->value_ && this->type_ == MT_vector4) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Vector4>(value); this->type_ = MT_vector4; } } 235 inline void assignValue(const orxonox::ColourValue& value) { if (this->value_ && this->type_ == MT_colourvalue) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::ColourValue>(value); this->type_ = MT_colourvalue; } } 236 inline void assignValue(const orxonox::Quaternion& value) { if (this->value_ && this->type_ == MT_quaternion) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Quaternion>(value); this->type_ = MT_quaternion; } } 237 inline void assignValue(const orxonox::Radian& value) { if (this->value_ && this->type_ == MT_radian) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Radian>(value); this->type_ = MT_radian; } } 238 inline void assignValue(const orxonox::Degree& value) { if (this->value_ && this->type_ == MT_degree) { this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Degree>(value); this->type_ = MT_degree; } } 239 template <typename T> inline void changeValueContainer(const T& value) { if (this->value_) { delete this->value_; } this->createNewValueContainer<T>(value); } 240 template <typename T> void createNewValueContainer(const T& value) { BOOST_STATIC_ASSERT(sizeof(T) == 0); } 241 242 MT_ValueBase* value_; 243 MT_Type type_; 78 244 }; 79 245 246 _UtilExport inline std::ostream& operator<<(std::ostream& outstream, const MultiType& mt) { if (mt.value_) { mt.value_->toString(outstream); } return outstream; } 247 248 template <> inline bool MultiType::isType<char>() const { return (this->type_ == MT_char); } 249 template <> inline bool MultiType::isType<unsigned char>() const { return (this->type_ == MT_uchar); } 250 template <> inline bool MultiType::isType<short>() const { return (this->type_ == MT_short); } 251 template <> inline bool MultiType::isType<unsigned short>() const { return (this->type_ == MT_ushort); } 252 template <> inline bool MultiType::isType<int>() const { return (this->type_ == MT_int); } 253 template <> inline bool MultiType::isType<unsigned int>() const { return (this->type_ == MT_uint); } 254 template <> inline bool MultiType::isType<long>() const { return (this->type_ == MT_long); } 255 template <> inline bool MultiType::isType<unsigned long>() const { return (this->type_ == MT_ulong); } 256 template <> inline bool MultiType::isType<long long>() const { return (this->type_ == MT_longlong); } 257 template <> inline bool MultiType::isType<unsigned long long>() const { return (this->type_ == MT_ulonglong); } 258 template <> inline bool MultiType::isType<float>() const { return (this->type_ == MT_float); } 259 template <> inline bool MultiType::isType<double>() const { return (this->type_ == MT_double); } 260 template <> inline bool MultiType::isType<long double>() const { return (this->type_ == MT_longdouble); } 261 template <> inline bool MultiType::isType<bool>() const { return (this->type_ == MT_bool); } 262 template <> inline bool MultiType::isType<void*>() const { return (this->type_ == MT_void); } 263 template <> inline bool MultiType::isType<std::string>() const { return (this->type_ == MT_string); } 264 template <> inline bool MultiType::isType<orxonox::Vector2>() const { return (this->type_ == MT_vector2); } 265 template <> inline bool MultiType::isType<orxonox::Vector3>() const { return (this->type_ == MT_vector3); } 266 template <> inline bool MultiType::isType<orxonox::Vector4>() const { return (this->type_ == MT_vector4); } 267 template <> inline bool MultiType::isType<orxonox::ColourValue>() const { return (this->type_ == MT_colourvalue); } 268 template <> inline bool MultiType::isType<orxonox::Quaternion>() const { return (this->type_ == MT_quaternion); } 269 template <> inline bool MultiType::isType<orxonox::Radian>() const { return (this->type_ == MT_radian); } 270 template <> inline bool MultiType::isType<orxonox::Degree>() const { return (this->type_ == MT_degree); } 271 272 template <> inline void MultiType::convert<const std::string&>() { this->convert<std::string>(); } 273 template <> inline void MultiType::convert<const orxonox::Vector2&>() { this->convert<orxonox::Vector2>(); } 274 template <> inline void MultiType::convert<const orxonox::Vector3&>() { this->convert<orxonox::Vector3>(); } 275 template <> inline void MultiType::convert<const orxonox::Vector4&>() { this->convert<orxonox::Vector4>(); } 276 template <> inline void MultiType::convert<const orxonox::ColourValue&>() { this->convert<orxonox::ColourValue>(); } 277 template <> inline void MultiType::convert<const orxonox::Quaternion&>() { this->convert<orxonox::Quaternion>(); } 278 template <> inline void MultiType::convert<const orxonox::Radian&>() { this->convert<orxonox::Radian>(); } 279 template <> inline void MultiType::convert<const orxonox::Degree&>() { this->convert<orxonox::Degree>(); } 280 281 template <> void MultiType::createNewValueContainer(const char& value); 282 template <> void MultiType::createNewValueContainer(const unsigned char& value); 283 template <> void MultiType::createNewValueContainer(const short& value); 284 template <> void MultiType::createNewValueContainer(const unsigned short& value); 285 template <> void MultiType::createNewValueContainer(const int& value); 286 template <> void MultiType::createNewValueContainer(const unsigned int& value); 287 template <> void MultiType::createNewValueContainer(const long& value); 288 template <> void MultiType::createNewValueContainer(const unsigned long& value); 289 template <> void MultiType::createNewValueContainer(const long long& value); 290 template <> void MultiType::createNewValueContainer(const unsigned long long& value); 291 template <> void MultiType::createNewValueContainer(const float& value); 292 template <> void MultiType::createNewValueContainer(const double& value); 293 template <> void MultiType::createNewValueContainer(const bool& value); 294 template <> void MultiType::createNewValueContainer(const long double& value); 295 template <> void MultiType::createNewValueContainer( void* const& value); 296 template <> void MultiType::createNewValueContainer(const std::string& value); 297 template <> void MultiType::createNewValueContainer(const orxonox::Vector2& value); 298 template <> void MultiType::createNewValueContainer(const orxonox::Vector3& value); 299 template <> void MultiType::createNewValueContainer(const orxonox::Vector4& value); 300 template <> void MultiType::createNewValueContainer(const orxonox::ColourValue& value); 301 template <> void MultiType::createNewValueContainer(const orxonox::Quaternion& value); 302 template <> void MultiType::createNewValueContainer(const orxonox::Radian& value); 303 template <> void MultiType::createNewValueContainer(const orxonox::Degree& value); 304 305 inline void MultiType::setValue(const char* value) { if (this->value_) { this->value_->setValue(std::string(value)); } else { this->createNewValueContainer(std::string(value)); } } 306 307 /* 308 309 (*) = funktion 2x: 310 function(...) : bezieht sich auf aktuellen type 311 function<T>(...) : bezieht sich auf type T 312 313 constructor(V value) : zuweisung 314 (*) operator=(V value) : zuweisung 315 (*) setValue(V value) : zuweisung 316 317 (*) == != > < <= >= : template 318 319 (*) reset() : zurück auf 0 (bzw "") 320 setType<T>() : setzt type und macht reset 321 convert<T>() : setzt type und konvertiert 322 323 (T) : return konvertiert 324 325 isType<T>() : return bool 326 getType() : return MT_Type 327 getTypename() : return string 328 329 toString() : return string 330 (*) fromString(string value) : konvertiert string 331 operator<< : toString() 332 333 */ 334 335 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC 336 #pragma warning(pop) 337 #endif 338 80 339 #endif /* _MultiType_H__ */ -
code/branches/core3/src/util/OutputBuffer.h
r1586 r1716 66 66 inline OutputBuffer& operator<<(const OutputBuffer& object) 67 67 { 68 this->stream_ << object.stream_ ;68 this->stream_ << object.stream_.rdbuf(); 69 69 this->callListeners(); 70 70 return *this; -
code/branches/core3/src/util/UtilPrereqs.h
r1606 r1716 63 63 class Convert; 64 64 class ExprParser; 65 class MultiTypePrimitive; 66 class MultiTypeString; 67 class MultiTypeMath; 65 class MultiType; 68 66 class SubString; 69 67
Note: See TracChangeset
for help on using the changeset viewer.