/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package oms3.dsl.cosu;
import java.util.ArrayList;
import java.util.List;
/** Objective function handling.
*
* @author od kmo
*/
public class parseRange {
public List<Integer> parse(String range, int max) {
List<Integer> idx = new ArrayList<Integer>();
String[] n = range.split(",");
for (String s : n) {
String[] d = s.split("-");
int mi = Integer.parseInt(d[0]);
if (mi < 0 || mi >= max) {
throw new IllegalArgumentException(range);
}
if (d.length == 2) {
if (d[1].equals("*")) {
d[1] = Integer.toString(max - 1);
}
int ma = Integer.parseInt(d[1]);
if (ma <= mi || ma >= max || ma < 0) {
throw new IllegalArgumentException(range);
}
for (int i = mi; i <= ma; i++) {
idx.add(i);
}
} else {
idx.add(mi);
}
}
return idx;
}
public boolean[] getArray(String str, int length) {
boolean[] mask = new boolean[length];
List<Integer> idx = new ArrayList<Integer>();
if (length > 1) {
idx = parse(str, length);
} else // parseRange not happy with "0-*" for length of 1.
{
idx.add(0);
}
for (int i = 0; i < length; i++) { // match all rows in the range provided
mask[i] = idx.contains(i);
}
return mask;
}
public List<Integer> StringToList(String range) {
List<Integer> idx = new ArrayList<Integer>();
String s0 = range.replace(" ","");
String s1 = s0.replace("{","");
String s2 = s1.replace("}","");
String[] s3 = s2.split(",");
for (String s : s3) {
int mi = Integer.parseInt(s);
idx.add(mi);
}
return idx;
}
public int[] StringToIntArray(String range) {
List<Integer> lst = StringToList(range);
int[] arr = new int[lst.size()];
for (int i=0; i< arr.length; i++) {
arr[i] = lst.get(i);
}
return arr;
}
}