Class 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 with addValue(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 an LSPValue 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 method iterator() 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
      An LSPMap 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 given LSExpression 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 given LSPFunction 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 given LSPMap 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 given LSPModule 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 an LSPValue.
      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 the LSExpression associated with the given key.
      LSExpression getExpression​(java.lang.String key)
      Returns the LSExpression associated with the given key.
      LSExpression getExpression​(LSPValue key)
      Returns the LSExpression associated with the given key.
      LSPFunction getFunction​(long key)
      Returns the LSPFunction associated with the given key.
      LSPFunction getFunction​(java.lang.String key)
      Returns the LSPFunction associated with the given key.
      LSPFunction getFunction​(LSPValue key)
      Returns the LSPFunction 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 the LSPMap associated with the given key.
      LSPMap getMap​(java.lang.String key)
      Returns the LSPMap associated with the given key.
      LSPMap getMap​(LSPValue key)
      Returns the LSPMap associated with the given key.
      LSPModule getModule​(long key)
      Returns the LSPModule associated with the given key.
      LSPModule getModule​(java.lang.String key)
      Returns the LSPModule associated with the given key.
      LSPModule getModule​(LSPValue key)
      Returns the LSPModule 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 an LSPValue.
      LSPValue getValue​(java.lang.String key)
      Returns the value associated with the given key as an LSPValue.
      LSPValue getValue​(LSPValue key)
      Returns the value associated with the given key as an LSPValue.
      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 the LSExpression to the given key in the map.
      void setExpression​(java.lang.String key, LSExpression expr)
      Associates the LSExpression to the given key in the map.
      void setExpression​(LSPValue key, LSExpression expr)
      Associates the LSExpression to the given key in the map.
      void setFunction​(long key, LSPFunction function)
      Associates the LSPFunction to the given key in the map.
      void setFunction​(java.lang.String key, LSPFunction function)
      Associates the LSPFunction to the given key in the map.
      void setFunction​(LSPValue key, LSPFunction function)
      Associates the LSPFunction 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 the LSPMap to the given key in the map.
      void setMap​(java.lang.String key, LSPMap map)
      Associates the LSPMap to the given key in the map.
      void setMap​(LSPValue key, LSPMap map)
      Associates the LSPMap to the given key in the map.
      void setModule​(long key, LSPModule module)
      Associates the LSPModule to the given key in the map.
      void setModule​(java.lang.String key, LSPModule module)
      Associates the LSPModule to the given key in the map.
      void setModule​(LSPValue key, LSPModule module)
      Associates the LSPModule 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 the LSPValue to the given key.
      void setValue​(java.lang.String key, LSPValue value)
      Associates the LSPValue to the given key in the map.
      void setValue​(LSPValue key, LSPValue value)
      Associates the LSPValue 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.
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • 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 interface java.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 given LSExpression 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 given LSPMap 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 given LSPModule 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 given LSPFunction 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 an LSPValue. 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 the LSPModule 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 the LSPFunction 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 the LSPMap 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 the LSExpression 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 the LSPValue to the given key in the map. If the value is nil, this has the same effect as unset(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 the LSPModule 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 the LSPFunction 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 the LSPMap 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 the LSExpression 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 an LSPValue. 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 the LSPModule 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 the LSPFunction 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 the LSPMap 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 the LSExpression 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 the LSPValue to the given key. If the LSPValue is nil, this has the same effect as unset(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 the LSPModule 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 the LSPFunction 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 the LSPMap 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 the LSExpression 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 an LSPValue. 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 the LSPModule 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 the LSPFunction 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 the LSPMap 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 the LSExpression 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 the LSPValue to the given key in the map. If the LSPValue is nil, this has the same effect as unset(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 the LSPModule 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 the LSPFunction 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 the LSPMap 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 the LSExpression 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 interface java.lang.Iterable<LSPMap.Entry>
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object