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;
00059 int subIndex2 = valueIndex[i - 1];
00060 subIndex2 ++;
00061 valueIndex[i - 1] = subIndex2;
00062 }
00063 }
00064 }
00065
00066
00067
00068 }
00069