/*
Copyright 2006 by Sean Luke
Licensed under the Academic Free License version 3.0
See the file "LICENSE" for more information
*/
package ec.util;
import java.io.Serializable;
/*
* Parameter.java
* Created: Sat Aug 7 12:06:49 1999
*/
/**
*
* A Parameter is an object which the ParameterDatabase class
* uses as a key to associate with strings, forming a key-value pair.
* Parameters are designed to be hierarchical in nature, consisting
* of "path items" separated by a path separator.
* Parameters are created either from a single path item, from an array
* of path items, or both. For example, a parameter with the path
* foo.bar.baz might be created from
* new Parameter(new String[] {"foo","bar","baz"})
*
*
Parameters are not mutable -- but once a parameter is created, path
* items may be pushed an popped from it, forming a new parameter.
* For example, if a parameter p consists of the path foo.bar.baz,
* p.pop() results in a new parameter whose path is foo.bar
* This pushing and popping isn't cheap, so be sparing.
*
*
Because this system internally uses "." as its path separator, you should
* not use that character in parts of the path that you provide; however
* if you need some other path separator, you can change the delimiter in
* the code trivially.
* In fact, you can create a new Parameter with a path foo.bar.baz simply
* by calling new Parameter("foo.bar.baz") but you'd better know
* what you're doing.
*
*
Additionally, parameters must not contain "#", "=", non-ascii values,
* or whitespace. Yes, a parameter path item may be empty.
*
* @author Sean Luke
* @version 1.0
*/
public class Parameter implements Serializable
{
public String param;
public static final char delimiter = '.';
/** Creates a new parameter by joining the path items in s into a single path. */
public Parameter(String[] s) throws ec.util.BadParameterException
{
if (s.length==0)
throw new BadParameterException("Parameter created with length 0");
for (int x=0;x
Ads help maintain this website.