summaryrefslogtreecommitdiff
path: root/src/variable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/variable.cpp')
-rw-r--r--src/variable.cpp42
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
65Variable Variable::newVariableName( const Bu::String &s )
66{
67 Variable v( tVariable );
68 (*v.sValue) = s;
69 return v;
70}
71
72bool Variable::getBool() const
73{
74 return bValue;
75}
76
77int64_t Variable::getInt() const
78{
79 return iValue;
80}
81
82double Variable::getFloat() const
83{
84 return fValue;
85}
86
87Bu::String Variable::getString() const
88{
89 return *sValue;
90}
91
65Variable Variable::to( Type e ) const 92Variable 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;