VariableCombined.cpp
Go to the documentation of this file.
00001 #include "VariableCombined.h"
00002 
00003 VariableCombined::VariableCombined(string name) : Variable(name)
00004 {
00005 
00006 }
00007 
00008 VariableCombined::~VariableCombined(void)
00009 {
00010 }
00011 
00012 void VariableCombined::addSubVar(SharedPointer<IVariable> subVar)
00013 {
00014         subVariables.push_back(subVar);
00015 }
00016 
00017 SharedPointer<IVariable> VariableCombined::getSubVar(int index)
00018 {
00019         return subVariables[index];
00020 }
00021 
00022 void VariableCombined::seal()
00023 {
00024         if(subVariables.size() == 0 )
00025         {
00026                 return;
00027         }
00028         vector<vector<SharedPointer<IVariableValue> > > valueListArray;
00029         vector<int> valueIndex;
00030         for(int i = 0 ;i < subVariables.size() ; i++)
00031         {
00032                 SharedPointer<IVariable> subVariable = subVariables[i];
00033                 valueListArray.push_back(subVariable->getValues());
00034                 valueIndex.push_back(0);
00035         }
00036 
00037         while(valueIndex[0]< valueListArray[0].size())
00038         {
00039                 string curVal = "";
00040                 for(int i = 0 ; i < valueIndex.size() ; i ++)
00041                 {
00042                         int subIndex = valueIndex[i];
00043                         string curPart = valueListArray[i][subIndex]->getValueName();
00044                         curVal += curPart;
00045                 }
00046 
00047                 this->addValue(curVal);
00048 
00049                 int lastIndex = valueIndex[(valueIndex.size() - 1)];
00050                 lastIndex ++;
00051                 valueIndex[valueIndex.size() - 1] = lastIndex;
00052 
00053                 for(int i = valueIndex.size() -1 ; i > 0  ; i --)
00054                 {
00055                         int subIndex = valueIndex[i];
00056                         if(subIndex >= valueListArray[i].size())
00057                         {
00058                                 valueIndex[i]= 0; // carry in
00059                                 int subIndex2 = valueIndex[i - 1];
00060                                 subIndex2 ++;
00061                                 valueIndex[i - 1] = subIndex2;
00062                         }
00063                 }
00064         }
00065 
00066 
00067 
00068 }
00069 


appl
Author(s): petercai
autogenerated on Tue Jan 7 2014 11:02:29