Package localsolver.modeler
Class LSPMap
- java.lang.Object
-
- localsolver.modeler.LSPMap
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.lang.Iterable<LSPMap.Entry>
public class LSPMap extends java.lang.Object implements java.lang.Iterable<LSPMap.Entry>, java.lang.AutoCloseable
An LSPMap is a data structure mapping keys to values. A map is both an associative table and an array. Setting a value to an existing key will overwrite any value previously set for that key. When used as an array-like structure, adding a new unkeyed element to an LSPMap withaddValue(LSPValue)
automatically assigns an integer key to the element equal to the largest integer key already present plus one, or zero if no integer key exists. Most of the functions below exist in multiple versions: Values and keys can be manipulated through their native type (like int, double, String,LSPMap
,LSPFunction
...) or manipulated with anLSPValue
which is a container that can hold any type of value. Using the native type is more convenient and results in less overhead most of the time.LSPValue
should only be used when you don't know the type of the manipulated value. The iterators returned by the methoditerator()
follow the fail-fast convention: if the map is structurally modified after the creation of an iterator (by using the methods add, set, unset or clear), the iterator will throw an exception. In other words, you can't modify a map while you are iterating over it.- Since:
- 10.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LSPMap.Entry
AnLSPMap
entry (key, value) pair.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addBool(boolean value)
Adds the given boolean value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addDouble(double value)
Adds the given double value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addExpression(LSExpression expr)
Adds the givenLSExpression
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addFunction(LSPFunction function)
Adds the givenLSPFunction
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addInt(long value)
Adds the given integer value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addMap(LSPMap map)
Adds the givenLSPMap
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addModule(LSPModule module)
Adds the givenLSPModule
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addString(java.lang.String str)
Adds the given String value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.void
addValue(LSPValue value)
Adds the given value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.LSPValue
asValue()
Returns the map as anLSPValue
.void
clear()
Erases all elements from the map.void
close()
Releases the reference.long
count()
Returns the number of elements in the map.boolean
equals(java.lang.Object obj)
boolean
getBool(long key)
Returns the boolean value associated with the given key.boolean
getBool(java.lang.String key)
Returns the boolean value associated with the given key.boolean
getBool(LSPValue key)
Returns the boolean value associated with the given key.double
getDouble(long key)
Returns the double value associated with the given key.double
getDouble(java.lang.String key)
Returns the double value associated with the given key.double
getDouble(LSPValue key)
Returns the double value associated with the given key.LSExpression
getExpression(long key)
Returns theLSExpression
associated with the given key.LSExpression
getExpression(java.lang.String key)
Returns theLSExpression
associated with the given key.LSExpression
getExpression(LSPValue key)
Returns theLSExpression
associated with the given key.LSPFunction
getFunction(long key)
Returns theLSPFunction
associated with the given key.LSPFunction
getFunction(java.lang.String key)
Returns theLSPFunction
associated with the given key.LSPFunction
getFunction(LSPValue key)
Returns theLSPFunction
associated with the given key.long
getInt(long key)
Returns the integer value associated with the given key.long
getInt(java.lang.String key)
Returns the integer value associated with the given key.long
getInt(LSPValue key)
Returns the integer value associated with the given key.LSPMap
getMap(long key)
Returns theLSPMap
associated with the given key.LSPMap
getMap(java.lang.String key)
Returns theLSPMap
associated with the given key.LSPMap
getMap(LSPValue key)
Returns theLSPMap
associated with the given key.LSPModule
getModule(long key)
Returns theLSPModule
associated with the given key.LSPModule
getModule(java.lang.String key)
Returns theLSPModule
associated with the given key.LSPModule
getModule(LSPValue key)
Returns theLSPModule
associated with the given key.java.lang.String
getString(long key)
Returns the String value associated with the given key.java.lang.String
getString(java.lang.String key)
Returns the String value associated with the given key.java.lang.String
getString(LSPValue key)
Returns the String value associated with the given key.LSPValue
getValue(long key)
Returns the value associated with the given key as anLSPValue
.LSPValue
getValue(java.lang.String key)
Returns the value associated with the given key as anLSPValue
.LSPValue
getValue(LSPValue key)
Returns the value associated with the given key as anLSPValue
.int
hashCode()
boolean
isDefined(int key)
Returns true if the given key is defined in the map.boolean
isDefined(java.lang.String key)
Returns true if the given key is defined in the map.boolean
isDefined(LSPValue key)
Returns true if the given key is defined in the map.java.util.Iterator<LSPMap.Entry>
iterator()
Returns a read-only iterator over the contents of this map.void
setBool(long key, boolean value)
Associates the boolean value to the given key in the map.void
setBool(java.lang.String key, boolean value)
Associates the boolean value to the given key in the map.void
setBool(LSPValue key, boolean value)
Associates the boolean value to the given key in the map.void
setDouble(long key, double value)
Associates the double value to the given key in the map.void
setDouble(java.lang.String key, double value)
Associates the double value to the given key in the map.void
setDouble(LSPValue key, double value)
Associates the double value to the given key in the map.void
setExpression(long key, LSExpression expr)
Associates theLSExpression
to the given key in the map.void
setExpression(java.lang.String key, LSExpression expr)
Associates theLSExpression
to the given key in the map.void
setExpression(LSPValue key, LSExpression expr)
Associates theLSExpression
to the given key in the map.void
setFunction(long key, LSPFunction function)
Associates theLSPFunction
to the given key in the map.void
setFunction(java.lang.String key, LSPFunction function)
Associates theLSPFunction
to the given key in the map.void
setFunction(LSPValue key, LSPFunction function)
Associates theLSPFunction
to the given key in the map.void
setInt(long key, long value)
Associates the integer value to the given key in the map.void
setInt(java.lang.String key, long value)
Associates the integer value to the given key in the map.void
setInt(LSPValue key, long value)
Associates the integer value to the given key in the map.void
setMap(long key, LSPMap map)
Associates theLSPMap
to the given key in the map.void
setMap(java.lang.String key, LSPMap map)
Associates theLSPMap
to the given key in the map.void
setMap(LSPValue key, LSPMap map)
Associates theLSPMap
to the given key in the map.void
setModule(long key, LSPModule module)
Associates theLSPModule
to the given key in the map.void
setModule(java.lang.String key, LSPModule module)
Associates theLSPModule
to the given key in the map.void
setModule(LSPValue key, LSPModule module)
Associates theLSPModule
to the given key in the map.void
setString(long key, java.lang.String str)
Associates the String value to the given key in the map.void
setString(java.lang.String key, java.lang.String str)
Associates the String value to the given key in the map.void
setString(LSPValue key, java.lang.String str)
Associates the String value to the given key in the map.void
setValue(long key, LSPValue value)
Associates theLSPValue
to the given key.void
setValue(java.lang.String key, LSPValue value)
Associates theLSPValue
to the given key in the map.void
setValue(LSPValue key, LSPValue value)
Associates theLSPValue
to the given key in the map.void
unset(long key)
Unsets the given key in the map if present.void
unset(java.lang.String key)
Unsets the given key in the map if present.void
unset(LSPValue key)
Unsets the given key in the map if present.
-
-
-
Method Detail
-
close
public void close()
Releases the reference. If this map was already released, returns immediately and does nothing. Invoking any method on this object after this operation will throw an exception.
Note: Releasing a reference does not necessarily imply that the underlying map object is destroyed. It is only destroyed if no more references point to it.
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Since:
- 11.5
-
count
public long count()
Returns the number of elements in the map.
-
clear
public void clear()
Erases all elements from the map. After this call,count()
returns zero.
-
addValue
public void addValue(LSPValue value)
Adds the given value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
value
- Value to add in the map.
-
addInt
public void addInt(long value)
Adds the given integer value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
value
- Integer value to add in the map.
-
addDouble
public void addDouble(double value)
Adds the given double value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
value
- Double value to add in the map.
-
addBool
public void addBool(boolean value)
Adds the given boolean value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
value
- Boolean value to add in the map.
-
addExpression
public void addExpression(LSExpression expr)
Adds the givenLSExpression
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
expr
- LSExpression to add in the map.
-
addMap
public void addMap(LSPMap map)
Adds the givenLSPMap
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
map
- Map to add in the map.
-
addModule
public void addModule(LSPModule module)
Adds the givenLSPModule
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
module
- Module to add in the map.
-
addString
public void addString(java.lang.String str)
Adds the given String value to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
str
- String value to add in the map.
-
addFunction
public void addFunction(LSPFunction function)
Adds the givenLSPFunction
to the map with a key corresponding to the largest integer key present in the map plus one, or zero if no integer key exists.- Parameters:
function
- Function to add in the map.
-
getValue
public LSPValue getValue(java.lang.String key)
Returns the value associated with the given key as anLSPValue
. If no value is associated with the key, an LSPValue representing nil is returned.- Parameters:
key
- String key- Returns:
- LSPValue associated with the key.
-
getInt
public long getInt(java.lang.String key)
Returns the integer value associated with the given key. The value must exist and must be an integer.- Parameters:
key
- String key.- Returns:
- Integer value associated with the key.
-
getDouble
public double getDouble(java.lang.String key)
Returns the double value associated with the given key. The value must exist and must be a double.- Parameters:
key
- String key.- Returns:
- Double value associated with the key.
-
getBool
public boolean getBool(java.lang.String key)
Returns the boolean value associated with the given key. The value must exist and must be a boolean.- Parameters:
key
- String key.- Returns:
- Boolean value associated with the key.
-
getString
public java.lang.String getString(java.lang.String key)
Returns the String value associated with the given key. The value must exist and must be a String.- Parameters:
key
- String key.- Returns:
- String value associated with the key.
-
getModule
public LSPModule getModule(java.lang.String key)
Returns theLSPModule
associated with the given key. The value must exist and must be a module.- Parameters:
key
- String key.- Returns:
- Module associated with the key.
-
getFunction
public LSPFunction getFunction(java.lang.String key)
Returns theLSPFunction
associated with the given key. The value must exist and must be a function.- Parameters:
key
- String key.- Returns:
- Function associated with the key.
-
getMap
public LSPMap getMap(java.lang.String key)
Returns theLSPMap
associated with the given key. The value must exist and must be a map.- Parameters:
key
- String key.- Returns:
- Map associated with the key.
-
getExpression
public LSExpression getExpression(java.lang.String key)
Returns theLSExpression
associated with the given key. The value must exist and must be an expression.- Parameters:
key
- String key.- Returns:
- Expression associated with the key.
-
setValue
public void setValue(java.lang.String key, LSPValue value)
Associates theLSPValue
to the given key in the map. If the value is nil, this has the same effect asunset(java.lang.String)
. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.value
- LSPValue to set.
-
setInt
public void setInt(java.lang.String key, long value)
Associates the integer value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.value
- Integer value to set.
-
setDouble
public void setDouble(java.lang.String key, double value)
Associates the double value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.value
- Double value to set.
-
setBool
public void setBool(java.lang.String key, boolean value)
Associates the boolean value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.value
- Boolean value to set.
-
setString
public void setString(java.lang.String key, java.lang.String str)
Associates the String value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.str
- String value to set.
-
setModule
public void setModule(java.lang.String key, LSPModule module)
Associates theLSPModule
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.module
- Module to set.
-
setFunction
public void setFunction(java.lang.String key, LSPFunction function)
Associates theLSPFunction
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.function
- Function to set.
-
setMap
public void setMap(java.lang.String key, LSPMap map)
Associates theLSPMap
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.map
- Map to set.
-
setExpression
public void setExpression(java.lang.String key, LSExpression expr)
Associates theLSExpression
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- String key.expr
- Expression to set.
-
getValue
public LSPValue getValue(long key)
Returns the value associated with the given key as anLSPValue
. If no value is associated with the key, an LSPValue representing nil is returned.- Parameters:
key
- Integer key- Returns:
- LSPValue associated with the key.
-
getInt
public long getInt(long key)
Returns the integer value associated with the given key. The value must exist and must be an integer.- Parameters:
key
- Integer key.- Returns:
- Integer value associated with the key.
-
getDouble
public double getDouble(long key)
Returns the double value associated with the given key. The value must exist and must be a double.- Parameters:
key
- Integer key.- Returns:
- Double value associated with the key.
-
getBool
public boolean getBool(long key)
Returns the boolean value associated with the given key. The value must exist and must be a boolean.- Parameters:
key
- Integer key.- Returns:
- Boolean value associated with the key.
-
getString
public java.lang.String getString(long key)
Returns the String value associated with the given key. The value must exist and must be a String.- Parameters:
key
- Integer key.- Returns:
- String value associated with the key.
-
getModule
public LSPModule getModule(long key)
Returns theLSPModule
associated with the given key. The value must exist and must be a module.- Parameters:
key
- Integer key.- Returns:
- Module associated with the key.
-
getFunction
public LSPFunction getFunction(long key)
Returns theLSPFunction
associated with the given key. The value must exist and must be a function.- Parameters:
key
- Integer key.- Returns:
- Function associated with the key.
-
getMap
public LSPMap getMap(long key)
Returns theLSPMap
associated with the given key. The value must exist and must be a map.- Parameters:
key
- Integer key.- Returns:
- Map associated with the key.
-
getExpression
public LSExpression getExpression(long key)
Returns theLSExpression
associated with the given key. The value must exist and must be an expression.- Parameters:
key
- Integer key.- Returns:
- Expression associated with the key.
-
setValue
public void setValue(long key, LSPValue value)
Associates theLSPValue
to the given key. If the LSPValue is nil, this has the same effect asunset(java.lang.String)
. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.value
- LSPValue to set.
-
setInt
public void setInt(long key, long value)
Associates the integer value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.value
- Integer value to set.
-
setDouble
public void setDouble(long key, double value)
Associates the double value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.value
- Double value to set.
-
setBool
public void setBool(long key, boolean value)
Associates the boolean value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.value
- Boolean value to set.
-
setString
public void setString(long key, java.lang.String str)
Associates the String value to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.str
- String value to set.
-
setModule
public void setModule(long key, LSPModule module)
Associates theLSPModule
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.module
- Module to set.
-
setFunction
public void setFunction(long key, LSPFunction function)
Associates theLSPFunction
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.function
- Function to set.
-
setMap
public void setMap(long key, LSPMap map)
Associates theLSPMap
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.map
- Map to set.
-
setExpression
public void setExpression(long key, LSExpression expr)
Associates theLSExpression
to the given key in the map. If the map already contained an association for the key, the previous value is replaced.- Parameters:
key
- Integer key.expr
- Expression to set.
-
getValue
public LSPValue getValue(LSPValue key)
Returns the value associated with the given key as anLSPValue
. If no value is associated with the key, an LSPValue representing nil is returned.- Parameters:
key
- LSPValue key- Returns:
- Value associated with the key.
-
getInt
public long getInt(LSPValue key)
Returns the integer value associated with the given key. The value must exist and must be an integer.- Parameters:
key
- LSPValue key.- Returns:
- Integer value associated with the key.
-
getDouble
public double getDouble(LSPValue key)
Returns the double value associated with the given key. The value must exist and must be a double.- Parameters:
key
- LSPValue key.- Returns:
- Double value associated with the key.
-
getBool
public boolean getBool(LSPValue key)
Returns the boolean value associated with the given key. The value must exist and must be a boolean.- Parameters:
key
- LSPValue key.- Returns:
- Boolean value associated with the key.
-
getString
public java.lang.String getString(LSPValue key)
Returns the String value associated with the given key. The value must exist and must be a String.- Parameters:
key
- LSPValue key.- Returns:
- String value associated with the key.
-
getModule
public LSPModule getModule(LSPValue key)
Returns theLSPModule
associated with the given key. The value must exist and must be a module.- Parameters:
key
- LSPValue key.- Returns:
- Module associated with the key.
-
getFunction
public LSPFunction getFunction(LSPValue key)
Returns theLSPFunction
associated with the given key. The value must exist and must be a function.- Parameters:
key
- LSPValue key.- Returns:
- Function associated with the key.
-
getMap
public LSPMap getMap(LSPValue key)
Returns theLSPMap
associated with the given key. The value must exist and must be a map.- Parameters:
key
- LSPValue key.- Returns:
- Map associated with the key.
-
getExpression
public LSExpression getExpression(LSPValue key)
Returns theLSExpression
associated with the given key. The value must exist and must be an expression.- Parameters:
key
- LSPValue key.- Returns:
- Expression associated with the key.
-
setValue
public void setValue(LSPValue key, LSPValue value)
Associates theLSPValue
to the given key in the map. If the LSPValue is nil, this has the same effect asunset(java.lang.String)
. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.value
- LSPValue to set.
-
setInt
public void setInt(LSPValue key, long value)
Associates the integer value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.value
- Integer value to set.
-
setDouble
public void setDouble(LSPValue key, double value)
Associates the double value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.value
- Double value to set.
-
setBool
public void setBool(LSPValue key, boolean value)
Associates the boolean value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.value
- Boolean value to set.
-
setString
public void setString(LSPValue key, java.lang.String str)
Associates the String value to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.str
- String value to set.
-
setModule
public void setModule(LSPValue key, LSPModule module)
Associates theLSPModule
to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.module
- Module to set.
-
setFunction
public void setFunction(LSPValue key, LSPFunction function)
Associates theLSPFunction
to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.function
- Function to set.
-
setMap
public void setMap(LSPValue key, LSPMap map)
Associates theLSPMap
to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.map
- Map to set.
-
setExpression
public void setExpression(LSPValue key, LSExpression expr)
Associates theLSExpression
to the given key in the map. If the map already contained an association for the key, the previous value is replaced. The key must not be nil.- Parameters:
key
- LSPValue key.expr
- Expression to set.
-
unset
public void unset(java.lang.String key)
Unsets the given key in the map if present. If the key doesn't exist in the map do nothing.- Parameters:
key
- String key.
-
unset
public void unset(long key)
Unsets the given key in the map if present. If the key doesn't exist in the map do nothing.- Parameters:
key
- Integer key.
-
unset
public void unset(LSPValue key)
Unsets the given key in the map if present. If the key doesn't exist in the map do nothing. The key must not be nil.- Parameters:
key
- LSPValue key.
-
isDefined
public boolean isDefined(java.lang.String key)
Returns true if the given key is defined in the map.- Parameters:
key
- String key.
-
isDefined
public boolean isDefined(int key)
Returns true if the given key is defined in the map.- Parameters:
key
- Integer key.
-
isDefined
public boolean isDefined(LSPValue key)
Returns true if the given key is defined in the map.- Parameters:
key
- LSPValue key.
-
iterator
public java.util.Iterator<LSPMap.Entry> iterator()
Returns a read-only iterator over the contents of this map. The optional remove() operation is not supported.- Specified by:
iterator
in interfacejava.lang.Iterable<LSPMap.Entry>
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
-