Source
vector<uInt> consolidatedRanges = consolidateAndOrderRanges(nSelectedChannels, ranges);
//# ParameterParser.h
//# Copyright (C) 2007
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This program is free software; you can redistribute it and/or modify it
//# under the terms of the GNU General Public License as published by the Free
//# Software Foundation; either version 2 of the License, or (at your option)
//# any later version.
//#
//# This program is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
//# more details.
//#
//# You should have received a copy of the GNU General Public License along
//# with this program; if not, write to the Free Software Foundation, Inc.,
//# 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
using namespace casacore;
namespace casa {
vector<uInt> ParameterParser::consolidateAndOrderRanges(
uInt& nSelected, const vector<uInt>& ranges
) {
uInt arrSize = ranges.size()/2;
uInt arrMin[arrSize];
uInt arrMax[arrSize];
for (uInt i=0; i<arrSize; i++) {
arrMin[i] = ranges[2*i];
arrMax[i] = ranges[2*i + 1];
}
Sort sort;
sort.sortKey (arrMin, TpUInt);
sort.sortKey (arrMax, TpUInt, 0, Sort::Descending);
Vector<uInt> inxvec;
vector<uInt> consol(0);
sort.sort(inxvec, arrSize);
for (uInt i=0; i<arrSize; i++) {
uInt idx = inxvec(i);
uInt size = consol.size();
uInt min = arrMin[idx];
uInt max = arrMax[idx];
uInt lastMax = (i == 0) ? 0 : consol[size-1];
if (i==0) {
// consol.resize(2, true);
// consol[0] = min;
// consol[1] = max;
consol.push_back(min);