diff options
Diffstat (limited to 'src/variable.cpp')
| -rw-r--r-- | src/variable.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/variable.cpp b/src/variable.cpp index adf1511..b7899f1 100644 --- a/src/variable.cpp +++ b/src/variable.cpp | |||
| @@ -62,6 +62,33 @@ Variable Variable::newSituationName( const Bu::String &s ) | |||
| 62 | return v; | 62 | return v; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | Variable Variable::newVariableName( const Bu::String &s ) | ||
| 66 | { | ||
| 67 | Variable v( tVariable ); | ||
| 68 | (*v.sValue) = s; | ||
| 69 | return v; | ||
| 70 | } | ||
| 71 | |||
| 72 | bool Variable::getBool() const | ||
| 73 | { | ||
| 74 | return bValue; | ||
| 75 | } | ||
| 76 | |||
| 77 | int64_t Variable::getInt() const | ||
| 78 | { | ||
| 79 | return iValue; | ||
| 80 | } | ||
| 81 | |||
| 82 | double Variable::getFloat() const | ||
| 83 | { | ||
| 84 | return fValue; | ||
| 85 | } | ||
| 86 | |||
| 87 | Bu::String Variable::getString() const | ||
| 88 | { | ||
| 89 | return *sValue; | ||
| 90 | } | ||
| 91 | |||
| 65 | Variable Variable::to( Type e ) const | 92 | Variable Variable::to( Type e ) const |
| 66 | { | 93 | { |
| 67 | if( e == eType ) | 94 | if( e == eType ) |
| @@ -195,6 +222,7 @@ Variable &Variable::operator=( const Variable &rhs ) | |||
| 195 | 222 | ||
| 196 | case tString: | 223 | case tString: |
| 197 | case tSituation: | 224 | case tSituation: |
| 225 | case tVariable: | ||
| 198 | (*sValue) = *rhs.sValue; | 226 | (*sValue) = *rhs.sValue; |
| 199 | break; | 227 | break; |
| 200 | 228 | ||
| @@ -261,6 +289,10 @@ Variable &Variable::operator+=( const Variable &rhs ) | |||
| 261 | case tSituation: | 289 | case tSituation: |
| 262 | throw VariableException("You cannot add situations."); | 290 | throw VariableException("You cannot add situations."); |
| 263 | break; | 291 | break; |
| 292 | |||
| 293 | case tVariable: | ||
| 294 | throw VariableException("You cannot add variable names."); | ||
| 295 | break; | ||
| 264 | } | 296 | } |
| 265 | 297 | ||
| 266 | return *this; | 298 | return *this; |
| @@ -310,6 +342,9 @@ Variable Variable::operator+( const Variable &rhs ) const | |||
| 310 | 342 | ||
| 311 | case tSituation: | 343 | case tSituation: |
| 312 | throw VariableException("You cannot add situations."); | 344 | throw VariableException("You cannot add situations."); |
| 345 | |||
| 346 | case tVariable: | ||
| 347 | throw VariableException("You cannot add variables."); | ||
| 313 | } | 348 | } |
| 314 | } | 349 | } |
| 315 | } | 350 | } |
| @@ -341,6 +376,7 @@ bool Variable::operator==( const Variable &rhs ) const | |||
| 341 | 376 | ||
| 342 | case tString: | 377 | case tString: |
| 343 | case tSituation: | 378 | case tSituation: |
| 379 | case tVariable: | ||
| 344 | return (*sValue) == (*rhs.sValue); | 380 | return (*sValue) == (*rhs.sValue); |
| 345 | 381 | ||
| 346 | case tList: | 382 | case tList: |
| @@ -369,6 +405,7 @@ void Variable::initType() | |||
| 369 | { | 405 | { |
| 370 | case tString: | 406 | case tString: |
| 371 | case tSituation: | 407 | case tSituation: |
| 408 | case tVariable: | ||
| 372 | sValue = new Bu::String(); | 409 | sValue = new Bu::String(); |
| 373 | break; | 410 | break; |
| 374 | 411 | ||
| @@ -388,6 +425,7 @@ void Variable::deinitType() | |||
| 388 | { | 425 | { |
| 389 | case tString: | 426 | case tString: |
| 390 | case tSituation: | 427 | case tSituation: |
| 428 | case tVariable: | ||
| 391 | delete sValue; | 429 | delete sValue; |
| 392 | break; | 430 | break; |
| 393 | 431 | ||
| @@ -418,6 +456,7 @@ template<> uint32_t Bu::__calcHashCode<Variable>( const Variable &k ) | |||
| 418 | 456 | ||
| 419 | case Variable::tString: | 457 | case Variable::tString: |
| 420 | case Variable::tSituation: | 458 | case Variable::tSituation: |
| 459 | case Variable::tVariable: | ||
| 421 | return Bu::__calcHashCode( *k.sValue ); | 460 | return Bu::__calcHashCode( *k.sValue ); |
| 422 | 461 | ||
| 423 | case Variable::tList: | 462 | case Variable::tList: |
| @@ -453,6 +492,9 @@ Bu::Formatter &operator<<( Bu::Formatter &f, const Variable &v ) | |||
| 453 | 492 | ||
| 454 | case Variable::tSituation: | 493 | case Variable::tSituation: |
| 455 | return f << "<<" << *v.sValue << ">>"; | 494 | return f << "<<" << *v.sValue << ">>"; |
| 495 | |||
| 496 | case Variable::tVariable: | ||
| 497 | return f << "(varref:\"" << *v.sValue << "\")"; | ||
| 456 | 498 | ||
| 457 | case Variable::tList: | 499 | case Variable::tList: |
| 458 | return f << *v.lValue; | 500 | return f << *v.lValue; |
