X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/24dbcb1a8071fe684d776063f04b314d92094e8d..23da67335f942457b0d8b1f10e9849eba0eee9f7:/contrib/psg/src/peersim/util/StringListParser.java diff --git a/contrib/psg/src/peersim/util/StringListParser.java b/contrib/psg/src/peersim/util/StringListParser.java deleted file mode 100644 index 445e19f2af..0000000000 --- a/contrib/psg/src/peersim/util/StringListParser.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 2003-2005 The BISON Project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 2 as - * published by the Free Software Foundation. - * - * 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -package peersim.util; - -import java.math.*; -import java.util.*; - -import org.lsmp.djep.groupJep.*; - -import peersim.config.*; - -/** - * This utility class can be used to parse range expressions. In particular, - * it is used by {@link peersim.rangesim.RangeSimulator} to express ranges for - * configuration properties. - *

- * The language for range expression is the following: - *

- *   [rangelist] := [range] | [range],[rangelist]
- *   [range] := value | min:max | min:max|step | 
- *      min:max*|step
- * 
- * where value, min, max and step - * are numeric atoms that defines ranges. - *

- * For example, the following range expression: - *

- *   5,9:11,13:17|2,32:128*|2
- * 
- * corresponds to 5 (single value), 9-10-11 (range between 9 and 11, - * default increment 1), 13-15-17 (range between 13 and 17, specified - * step 2, 32-64-128 (range between 32 and 128, multiplicative step 2). - * - * @author Alberto Montresor - * @version $Revision: 1.8 $ - */ -public class StringListParser -{ - -/** Disable instance construction */ -private StringListParser() { } - -/** - * Parse the specified string. - * - * @param s the string to be parsed - * @return an array of strings containing all the values defined by the - * range string - */ -public static String[] parseList(String s) -{ - ArrayList list = new ArrayList(); - String[] tokens = s.split(","); - for (int i = 0; i < tokens.length; i++) { - parseItem(list, tokens[i]); - } - return list.toArray(new String[list.size()]); -} - -private static void parseItem(List list, String item) -{ - String[] array = item.split(":"); - if (array.length == 1) { - parseSingleItem(list, item); - } else if (array.length == 2) { - parseRangeItem(list, array[0], array[1]); - } else { - throw new IllegalArgumentException("Element " + item - + "should be formatted as : or "); - } -} - -private static void parseSingleItem(List list, String item) -{ - list.add(item); -} - -private static void parseRangeItem(List list, String start, String stop) -{ - Number vstart; - Number vstop; - Number vinc; - boolean sum; - - GroupJep jep = new GroupJep(new Operators()); - jep.parseExpression(start); - vstart = (Number) jep.getValueAsObject(); - int pos = stop.indexOf("|*"); - if (pos >= 0) { - // The string contains a multiplicative factor - jep.parseExpression(stop.substring(0, pos)); - vstop = (Number) jep.getValueAsObject(); - jep.parseExpression(stop.substring(pos + 2)); - vinc = (Number) jep.getValueAsObject(); - sum = false; - } else { - pos = stop.indexOf("|"); - // The string contains an additive factor - if (pos >= 0) { - // The string contains just the final value - jep.parseExpression(stop.substring(0, pos)); - vstop = (Number) jep.getValueAsObject(); - jep.parseExpression(stop.substring(pos + 1)); - vinc = (Number) jep.getValueAsObject(); - sum = true; - } else { - jep.parseExpression(stop); - vstop = (Number) jep.getValueAsObject(); - vinc = BigInteger.ONE; - sum = true; - } - } - - if (vstart instanceof BigInteger && vstart instanceof BigInteger && vinc instanceof BigInteger) { - long vvstart = vstart.longValue(); - long vvstop = vstop.longValue(); - long vvinc = vinc.longValue(); - if (sum) { - for (long i = vvstart; i <= vvstop; i += vvinc) - list.add("" + i); - } else { - for (long i = vvstart; i <= vvstop; i *= vvinc) - list.add("" + i); - } - } else { - double vvstart = vstart.doubleValue(); - double vvstop = vstop.doubleValue(); - double vvinc = vinc.doubleValue(); - if (sum) { - for (double i = vvstart; i <= vvstop; i += vvinc) - list.add("" + i); - } else { - for (double i = vvstart; i <= vvstop; i *= vvinc) - list.add("" + i); - } - } -} - -/* -public static void main(String[] args) -{ - String[] ret = parseList(args[0]); - for (int i = 0; i < ret.length; i++) - System.out.print(ret[i] + " "); - System.out.println(""); -} -*/ -}