00001 #include "Variable.h" 00002 #include <exception> 00003 00004 00005 Variable::Variable(string name) 00006 { 00007 this->variableName = name; 00008 } 00009 00010 Variable::~Variable(void) 00011 { 00012 } 00013 vector<SharedPointer<IVariableValue> > Variable::getValues() 00014 { 00015 vector<SharedPointer<IVariableValue> > result; 00016 for(int i = 0; i < values.size(); i++) 00017 { 00018 result.push_back(values[i]); 00019 } 00020 return result; 00021 } 00022 00023 void Variable::addValue(SharedPointer<VariableValue> value) 00024 { 00025 values.push_back(value); 00026 } 00027 void Variable::addValue(string value, double initialProb) 00028 { 00029 SharedPointer<VariableValue> newValue (new VariableValue(this->getVariableName(), value, values.size(), initialProb)); 00030 addValue(newValue); 00031 } 00032 int Variable::getNumValues() 00033 { 00034 return values.size(); 00035 } 00036 string Variable::getVariableName() 00037 { 00038 return variableName; 00039 } 00040 00041 vector<SharedPointer<IVariableValue> > Variable::getInitialValues() 00042 { 00043 vector<SharedPointer<IVariableValue> > result; 00044 for(int i = 0; i < values.size(); i++) 00045 { 00046 if(values[i]->getProb() > 0.0001) 00047 { 00048 result.push_back(values[i]); 00049 } 00050 } 00051 return result; 00052 } 00053 00054 SharedPointer<IVariableValue> Variable::getValueByName(string valName) 00055 { 00056 for(int i = 0; i < values.size(); i++) 00057 { 00058 if(values[i]->getValueName().compare(valName) == 0) 00059 { 00060 return values[i]; 00061 } 00062 } 00063 00064 throw runtime_error("Cannot find value : " + valName + " in variable : " + this->getVariableName()); 00065 } 00066