Command::ConfigList Command::selectedConfigs(MasterDevice &m) { unsigned int i; ec_ioctl_master_t master; ec_ioctl_config_t config; ConfigList list; stringstream err; m.getMaster(&master); if (aliases == "-" && positions == "-") { // shortcut for (i = 0; i < master.config_count; i++) { m.getConfig(&config, i); list.push_back(config); } } else { // take the long way home... ConfigMap configs; uint16_t maxAlias = 0; // fill cascaded map structure with all configs for (i = 0; i < master.config_count; i++) { m.getConfig(&config, i); AliasMap &aliasMap = configs[config.alias]; aliasMap[config.position] = config; if (config.alias > maxAlias) { maxAlias = config.alias; } } ConfigAliasParser ap(maxAlias); NumberListParser::List aliasList = ap.parse(aliases.c_str()); NumberListParser::List::const_iterator ai; for (ai = aliasList.begin(); ai != aliasList.end(); ai++) { ConfigMap::iterator ci = configs.find(*ai); if (ci == configs.end()) { continue; } AliasMap &aliasMap = configs[*ai]; AliasPositionParser pp(aliasMap); NumberListParser::List posList = pp.parse(positions.c_str()); NumberListParser::List::const_iterator pi; for (pi = posList.begin(); pi != posList.end(); pi++) { AliasMap::const_iterator ci; ci = aliasMap.find(*pi); if (ci != aliasMap.end()) { list.push_back(ci->second); } } } } list.sort(); return list; }
ConfigList Config::getChildren(string name) { ConfigList list; ConfigList::const_iterator pos = m_children.begin(); for (; pos != m_children.end(); ++pos) { if ((*pos)->getName() == name) list.push_back(*pos); } return list; }
ConfigList Config::getChildren() { ConfigList list; ConfigList::const_iterator pos = m_children.begin(); for (; pos != m_children.end(); ++pos) { list.push_back(*pos); } return list; }