summaryrefslogtreecommitdiff
path: root/src/variable.cpp
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2012-01-16 22:32:56 -0700
committerMike Buland <eichlan@xagasoft.com>2012-01-16 22:32:56 -0700
commit3afa514e11dc16e3a166b39ad411465abd971d8a (patch)
tree3fc9a9b62682c2905909e749f461034634d78903 /src/variable.cpp
parent92f50ee62101b67e768b75c9111af3d0258c6ddd (diff)
downloadstage-3afa514e11dc16e3a166b39ad411465abd971d8a.tar.gz
stage-3afa514e11dc16e3a166b39ad411465abd971d8a.tar.bz2
stage-3afa514e11dc16e3a166b39ad411465abd971d8a.tar.xz
stage-3afa514e11dc16e3a166b39ad411465abd971d8a.zip
Lists (arrays) are now properly inedxable.0.02
Diffstat (limited to 'src/variable.cpp')
-rw-r--r--src/variable.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/variable.cpp b/src/variable.cpp
index 68a1778..0c83133 100644
--- a/src/variable.cpp
+++ b/src/variable.cpp
@@ -113,7 +113,7 @@ Variable *Variable::getVariablePtr() const
113 return pValue; 113 return pValue;
114} 114}
115 115
116const Variable::VariableList &Variable::getList() const 116const Variable::VariableArray &Variable::getList() const
117{ 117{
118 return *lValue; 118 return *lValue;
119} 119}
@@ -233,9 +233,12 @@ Variable Variable::to( Type e ) const
233 233
234void Variable::insert( const Variable &vKey, const Variable &vValue ) 234void Variable::insert( const Variable &vKey, const Variable &vValue )
235{ 235{
236 if( eType != tDictionary ) 236 if( eType == tDictionary )
237 throw Bu::ExceptionBase("Insert on non-dictionary."); 237 hValue->insert( vKey, vValue );
238 hValue->insert( vKey, vValue ); 238 else if( eType == tList )
239 lValue->get( vKey.getInt() ) = vValue;
240 else
241 throw Bu::ExceptionBase("Insert on non-dictionary and non-list.");
239} 242}
240 243
241bool Variable::has( const Variable &vKey ) 244bool Variable::has( const Variable &vKey )
@@ -244,7 +247,8 @@ bool Variable::has( const Variable &vKey )
244 return hValue->has( vKey ); 247 return hValue->has( vKey );
245 else if( eType == tList ) 248 else if( eType == tList )
246 { 249 {
247 for( VariableList::const_iterator i = lValue->begin(); i; i++ ) 250 for( VariableArray::const_iterator i =
251 const_cast<const VariableArray *>(lValue)->begin(); i; i++ )
248 { 252 {
249 if( (*i) == vKey ) 253 if( (*i) == vKey )
250 return true; 254 return true;
@@ -259,8 +263,10 @@ Variable &Variable::get( const Variable &vKey )
259{ 263{
260 if( eType == tDictionary ) 264 if( eType == tDictionary )
261 return hValue->get( vKey ); 265 return hValue->get( vKey );
266 else if( eType == tList )
267 return lValue->get( vKey.getInt() );
262 else 268 else
263 throw Bu::ExceptionBase("Insert on non-dictionary."); 269 throw Bu::ExceptionBase("Index on non-dictionary and non-list.");
264} 270}
265 271
266Variable &Variable::operator=( const Variable &rhs ) 272Variable &Variable::operator=( const Variable &rhs )
@@ -1006,7 +1012,7 @@ void Variable::initType()
1006 break; 1012 break;
1007 1013
1008 case tList: 1014 case tList:
1009 lValue = new VariableList(); 1015 lValue = new VariableArray();
1010 break; 1016 break;
1011 1017
1012 case tDictionary: 1018 case tDictionary: