00001 #include "rqt_mrta/config/params_array.h" 00002 00003 namespace rqt_mrta 00004 { 00005 namespace config 00006 { 00007 ParamsArray::ParamsArray(Params* parent) : Params("array", parent) {} 00008 00009 ParamsArray::~ParamsArray() {} 00010 00011 Params* ParamsArray::getParentParam() const 00012 { 00013 return parent() ? static_cast<Params*>(parent()) : NULL; 00014 } 00015 00016 ParamInterface* ParamsArray::clone() const 00017 { 00018 ParamsArray* array = new ParamsArray(); 00019 *array = *this; 00020 return array; 00021 } 00022 00023 bool ParamsArray::isArray() const { return true; } 00024 00025 void ParamsArray::createParams(size_t size) 00026 { 00027 Params* parent = getParentParam(); 00028 for (size_t index(0); index < names_.count(); index++) 00029 { 00030 parent->removeParam(names_[index]); 00031 } 00032 names_.clear(); 00033 for (size_t i(0); i < size; i++) 00034 { 00035 QString name(name_); 00036 Params* params = new Params(parent); 00037 params->setName(name.replace("@index@", QString::number(i))); 00038 names_.append(name); 00039 for (size_t j(0); j < params_.count(); j++) 00040 { 00041 params->addParam(params_[j]->clone()); 00042 } 00043 parent->addParam(params); 00044 } 00045 } 00046 } 00047 }