Class PyStringMap

  • All Implemented Interfaces:
    java.io.Serializable, Traverseproc

    public class PyStringMap
    extends AbstractDict
    implements Traverseproc
    Special fast dict implementation for __dict__ instances. Allows interned String keys in addition to PyObject unlike PyDictionary.
    See Also:
    Serialized Form
    • Constructor Detail

      • PyStringMap

        public PyStringMap()
      • PyStringMap

        public PyStringMap​(int capacity)
      • PyStringMap

        public PyStringMap​(java.util.Map<java.lang.Object,​PyObject> map)
      • PyStringMap

        public PyStringMap​(PyObject[] elements)
    • Method Detail

      • getMap

        public java.util.concurrent.ConcurrentMap<java.lang.Object,​PyObject> getMap()
        Specified by:
        getMap in class AbstractDict
      • __len__

        public int __len__()
        Description copied from class: PyObject
        Equivalent to the standard Python __len__ method. Part of the mapping discipline.
        Overrides:
        __len__ in class PyObject
        Returns:
        the length of the object
      • __nonzero__

        public boolean __nonzero__()
        Description copied from class: PyObject
        Equivalent to the standard Python __nonzero__ method. Returns whether of not a given PyObject is considered true.
        Overrides:
        __nonzero__ in class PyObject
      • __finditem__

        public PyObject __finditem__​(java.lang.String key)
        Description copied from class: PyObject
        A variant of the __finditem__ method which accepts a Java String as the key. By default, this method will call __finditem__(PyObject key) with the appropriate args. The only reason to override this method is for performance. Warning: key must be an interned string!!!!!!!!
        Overrides:
        __finditem__ in class PyObject
        Parameters:
        key - the key to lookup in this sequence - must be an interned string .
        Returns:
        the value corresponding to key or null if key is not found.
        See Also:
        PyObject.__finditem__(PyObject)
      • __finditem__

        public PyObject __finditem__​(PyObject key)
        Description copied from class: PyObject
        Very similar to the standard Python __getitem__ method. Instead of throwing a KeyError if the item isn't found, this just returns null. Classes that wish to implement __getitem__ should override this method instead (with the appropriate semantics.
        Overrides:
        __finditem__ in class PyObject
        Parameters:
        key - the key to lookup in this container
        Returns:
        the value corresponding to key or null if key is not found
      • __getitem__

        public PyObject __getitem__​(java.lang.String key)
      • __getitem__

        public PyObject __getitem__​(PyObject key)
        Description copied from class: PyObject
        Equivalent to the standard Python __getitem__ method. This method should not be overridden. Override the __finditem__ method instead.
        Overrides:
        __getitem__ in class PyObject
        Parameters:
        key - the key to lookup in this container.
        Returns:
        the value corresponding to that key.
        See Also:
        PyObject.__finditem__(PyObject)
      • __iter__

        public PyObject __iter__()
        Description copied from class: PyObject
        Return an iterator that is used to iterate the element of this sequence. From version 2.2, this method is the primary protocol for looping over sequences.

        If a PyObject subclass should support iteration based in the __finditem__() method, it must supply an implementation of __iter__() like this:

         public PyObject __iter__() {
             return new PySequenceIter(this);
         }
         
        When iterating over a python sequence from java code, it should be done with code like this:
         for (PyObject item : seq.asIterable()) {
             // Do somting with item
         }
         
        Overrides:
        __iter__ in class PyObject
      • __setitem__

        public void __setitem__​(java.lang.String key,
                                PyObject value)
        Description copied from class: PyObject
        A variant of the __setitem__ method which accepts a String as the key. This String must be interned. By default, this will call __setitem__(PyObject key, PyObject value) with the appropriate args. The only reason to override this method is for performance.
        Overrides:
        __setitem__ in class PyObject
        Parameters:
        key - the key whose value will be set - must be an interned string .
        value - the value to set this key to
        See Also:
        PyObject.__setitem__(PyObject, PyObject)
      • __setitem__

        public void __setitem__​(PyObject key,
                                PyObject value)
        Description copied from class: PyObject
        Equivalent to the standard Python __setitem__ method.
        Overrides:
        __setitem__ in class PyObject
        Parameters:
        key - the key whose value will be set
        value - the value to set this key to
      • __delitem__

        public void __delitem__​(java.lang.String key)
        Description copied from class: PyObject
        A variant of the __delitem__ method which accepts a String as the key. This String must be interned. By default, this will call __delitem__(PyObject key) with the appropriate args. The only reason to override this method is for performance.
        Overrides:
        __delitem__ in class PyObject
        Parameters:
        key - the key who will be removed - must be an interned string .
        See Also:
        PyObject.__delitem__(PyObject)
      • __delitem__

        public void __delitem__​(PyObject key)
        Description copied from class: PyObject
        Equivalent to the standard Python __delitem__ method.
        Overrides:
        __delitem__ in class PyObject
        Parameters:
        key - the key to be removed from the container
      • clear

        public void clear()
        Remove all items from the dictionary.
        Specified by:
        clear in class AbstractDict
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class PyObject
      • __cmp__

        public int __cmp__​(PyObject other)
        Description copied from class: PyObject
        Equivalent to the standard Python __cmp__ method.
        Overrides:
        __cmp__ in class PyObject
        Parameters:
        other - the object to compare this with.
        Returns:
        -1 if this < o; 0 if this == o; +1 if this > o; -2 if no comparison is implemented
      • has_key

        public boolean has_key​(java.lang.String key)
        Return true if the key exist in the dictionary.
      • __contains__

        public boolean __contains__​(PyObject o)
        Description copied from class: PyObject
        Equivalent to the standard Python __contains__ method.
        Overrides:
        __contains__ in class PyObject
        Parameters:
        o - the element to search for in this container.
        Returns:
        the result of the search.
      • get

        public PyObject get​(PyObject key,
                            PyObject defaultObj)
        Return this[key] if the key exists in the mapping, defaultObj is returned otherwise.
        Specified by:
        get in class AbstractDict
        Parameters:
        key - the key to lookup in the mapping.
        defaultObj - the value to return if the key does not exists in the mapping.
      • get

        public PyObject get​(PyObject key)
        Return this[key] if the key exists in the mapping, None is returned otherwise.
        Specified by:
        get in class AbstractDict
        Parameters:
        key - the key to lookup in the mapping.
      • merge

        public void merge​(PyObject other,
                          boolean override)
        Merge another PyObject that supports keys() with this dict.
        Specified by:
        merge in class AbstractDict
        Parameters:
        other - a PyObject with a keys() method
        override - if true, the value from other is used on key-collision
      • mergeFromKeys

        public void mergeFromKeys​(PyObject other,
                                  PyObject keys,
                                  boolean override)
        Merge another PyObject via its keys() method
        Specified by:
        mergeFromKeys in class AbstractDict
        Parameters:
        other - a PyObject with a keys() method
        keys - the result of other's keys() method
        override - if true, the value from other is used on key-collision
      • mergeFromSeq

        public void mergeFromSeq​(PyObject other,
                                 boolean override)
        Merge any iterable object producing iterable objects of length 2 into this dict.
        Specified by:
        mergeFromSeq in class AbstractDict
        Parameters:
        other - another PyObject
        override - if true, the value from other is used on key-collision
      • setdefault

        public PyObject setdefault​(PyObject key)
        Return this[key] if the key exist, otherwise insert key with a None value and return None.
        Specified by:
        setdefault in class AbstractDict
        Parameters:
        key - the key to lookup in the mapping.
      • setdefault

        public PyObject setdefault​(PyObject key,
                                   PyObject failobj)
        Return this[key] if the key exist, otherwise insert key with the value of failobj and return failobj
        Specified by:
        setdefault in class AbstractDict
        Parameters:
        key - the key to lookup in the mapping.
        failobj - the default value to insert in the mapping if key does not already exist.
      • popitem

        public PyObject popitem()
        Return a random (key, value) tuple pair and remove the pair from the mapping.
        Specified by:
        popitem in class AbstractDict
      • items

        public PyList items()
        Return a copy of the mappings list of (key, value) tuple pairs.
        Specified by:
        items in class AbstractDict
      • keys

        public PyList keys()
        Return a copy of the mappings list of keys. We have to take in account that we could be storing String or PyObject objects
        Specified by:
        keys in class AbstractDict
      • values

        public PyList values()
        Return a copy of the mappings list of values.
        Specified by:
        values in class AbstractDict
      • entrySet

        public java.util.Set entrySet()
        Specified by:
        entrySet in class AbstractDict
        See Also:
        Map.entrySet()