diff options
Diffstat (limited to 'src/variable.cpp')
-rw-r--r-- | src/variable.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/variable.cpp b/src/variable.cpp index 1e5cc9b..1100c84 100644 --- a/src/variable.cpp +++ b/src/variable.cpp | |||
@@ -55,6 +55,12 @@ Variable::Variable( const Bu::String &sValue ) : | |||
55 | this->sValue = new Bu::String( sValue ); | 55 | this->sValue = new Bu::String( sValue ); |
56 | } | 56 | } |
57 | 57 | ||
58 | Variable::Variable( Variable *pValue ) : | ||
59 | eType( tVarPtr ), | ||
60 | pValue( pValue ) | ||
61 | { | ||
62 | } | ||
63 | |||
58 | Variable::~Variable() | 64 | Variable::~Variable() |
59 | { | 65 | { |
60 | deinitType(); | 66 | deinitType(); |
@@ -102,6 +108,16 @@ VariableRef Variable::getVariableRef() const | |||
102 | return *rValue; | 108 | return *rValue; |
103 | } | 109 | } |
104 | 110 | ||
111 | Variable *Variable::getVariablePtr() const | ||
112 | { | ||
113 | return pValue; | ||
114 | } | ||
115 | |||
116 | const Variable::VariableHash &Variable::getHash() const | ||
117 | { | ||
118 | return *hValue; | ||
119 | } | ||
120 | |||
105 | Variable Variable::to( Type e ) const | 121 | Variable Variable::to( Type e ) const |
106 | { | 122 | { |
107 | if( e == eType ) | 123 | if( e == eType ) |
@@ -227,6 +243,14 @@ bool Variable::has( const Variable &vKey ) | |||
227 | throw Bu::ExceptionBase("Insert on non-dictionary."); | 243 | throw Bu::ExceptionBase("Insert on non-dictionary."); |
228 | } | 244 | } |
229 | 245 | ||
246 | Variable &Variable::get( const Variable &vKey ) | ||
247 | { | ||
248 | if( eType == tDictionary ) | ||
249 | return hValue->get( vKey ); | ||
250 | else | ||
251 | throw Bu::ExceptionBase("Insert on non-dictionary."); | ||
252 | } | ||
253 | |||
230 | Variable &Variable::operator=( const Variable &rhs ) | 254 | Variable &Variable::operator=( const Variable &rhs ) |
231 | { | 255 | { |
232 | deinitType(); | 256 | deinitType(); |
@@ -266,6 +290,10 @@ Variable &Variable::operator=( const Variable &rhs ) | |||
266 | case tDictionary: | 290 | case tDictionary: |
267 | (*hValue) = *rhs.hValue; | 291 | (*hValue) = *rhs.hValue; |
268 | break; | 292 | break; |
293 | |||
294 | case tVarPtr: | ||
295 | pValue = rhs.pValue; | ||
296 | break; | ||
269 | } | 297 | } |
270 | } | 298 | } |
271 | 299 | ||
@@ -725,11 +753,11 @@ void Variable::initType() | |||
725 | break; | 753 | break; |
726 | 754 | ||
727 | case tList: | 755 | case tList: |
728 | lValue = new VList(); | 756 | lValue = new VariableList(); |
729 | break; | 757 | break; |
730 | 758 | ||
731 | case tDictionary: | 759 | case tDictionary: |
732 | hValue = new VHash(); | 760 | hValue = new VariableHash(); |
733 | break; | 761 | break; |
734 | } | 762 | } |
735 | } | 763 | } |
@@ -821,6 +849,9 @@ Bu::Formatter &operator<<( Bu::Formatter &f, const Variable &v ) | |||
821 | 849 | ||
822 | case Variable::tDictionary: | 850 | case Variable::tDictionary: |
823 | return f << *v.hValue; | 851 | return f << *v.hValue; |
852 | |||
853 | case Variable::tVarPtr: | ||
854 | return f << "(varptr:" << *v.pValue << ")"; | ||
824 | } | 855 | } |
825 | 856 | ||
826 | return f << "ERROR"; | 857 | return f << "ERROR"; |