int appendListToRange(const std::string& FLAG_setList, OrderedMap<std::string, RangeList>* geneRange) { std::vector<std::string> fd; int ret = stringNaturalTokenize(FLAG_setList, ',', &fd); std::string chr; unsigned int beg, end; for (size_t i = 0; i < fd.size(); ++i) { if (!parseRangeFormat(fd[i], &chr, &beg, &end)) { logger->error("Cannot parse range: %s", fd[i].c_str()); continue; } (*geneRange)[fd[i]].addRange(chr.c_str(), beg, end); } return ret; }
/** * input range such as: * 1:100-200,3:200-300 * X:150 * MT */ void RangeList::addRangeList(const char* argRangeList) { if (!strlen(argRangeList)) return; std::string rangeList = argRangeList; std::vector<std::string> col; //col.AddTokens(arg, ','); stringTokenize(rangeList, ',', &col); for (size_t i = 0; i < col.size(); i++){ std::string c; unsigned int b,e; if (!parseRangeFormat(col[i], &c, &b, &e)) { this->rangeCollection.addRange(c, b, e); } else { Rprintf("This range does not conform 1:100-200 format -- skip %s\n", col[i].c_str()); } } }