public class HashTrieMap extends AbstractItem implements MapItem, GroundedValue
MapItem.TimeZoneStatus
Modifier and Type | Field and Description |
---|---|
static SequenceType |
SINGLE_MAP_TYPE |
Constructor and Description |
---|
HashTrieMap(ImmutableMap<AtomicMatchKey,KeyValuePair> imap,
XPathContext context)
Create a map whose contents are a copy of an existing immutable map
|
HashTrieMap(XPathContext context)
Create an empty map
|
Modifier and Type | Method and Description |
---|---|
HashTrieMap |
addEntry(AtomicValue key,
Sequence value)
Create a new map containing the existing entries in the map plus an additional entry,
without modifying the original.
|
Sequence |
call(XPathContext context,
Sequence[] args)
Invoke the function
|
static HashTrieMap |
copy(MapItem map,
XPathContext context)
Create a map whose entries are copies of the entries in an existing MapItem
|
boolean |
deepEquals(FunctionItem other,
XPathContext context,
AtomicComparer comparer,
int flags)
Test whether this FunctionItem is deep-equal to another function item,
under the rules of the deep-equal function
|
boolean |
effectiveBooleanValue()
Get the effective boolean value of this sequence
|
Sequence |
get(AtomicValue key)
Get an entry from the Map
|
int |
getArity()
Get the arity of the function
|
FunctionItemType |
getFunctionItemType(TypeHierarchy th)
Get the item type of this item as a function item
|
StructuredQName |
getFunctionName()
Get the name of the function, or null if it is anonymous
|
AtomicType |
getKeyType()
Get the lowest common item type of the keys in the map
|
KeyValuePair |
getKeyValuePair(AtomicValue key)
Get an key/value pair from the Map
|
String |
getStringValue()
Get the value of the item as a string.
|
CharSequence |
getStringValueCS()
Get the string value of the item as a CharSequence.
|
MapItem.TimeZoneStatus |
getTimeZoneStatus()
Ask whether the map includes calendar values with a timezone, calendar values without a timezone, or neither.
|
SequenceIterator |
getTypedValue()
Get the typed value of the item.
|
SequenceType |
getValueType()
Get the lowest common sequence type of all the values in the map
|
boolean |
initialPut(AtomicValue key,
Sequence value)
Add a new entry to this map.
|
boolean |
isEmpty()
Ask whether the map is empty
|
MapItem |
itemAt(int n)
Get the n'th item in the value, counting from 0
|
Iterator<KeyValuePair> |
iterator()
Get the set of all key-value pairs in the map
|
AtomicIterator |
keys()
Get the set of all key values in the map
|
HashTrieMap |
remove(AtomicValue key)
Remove an entry from the map
|
static HashTrieMap |
singleton(AtomicValue key,
Sequence value,
XPathContext context)
Create a singleton map with a single key and value
|
int |
size()
Get the size of the map
|
getLength, head, iterate, reduce, subsequence
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
iterate
getLength, head, reduce, subsequence
public static final SequenceType SINGLE_MAP_TYPE
public HashTrieMap(XPathContext context)
context
- The XPath dynamic context. Gives access to type information.public HashTrieMap(ImmutableMap<AtomicMatchKey,KeyValuePair> imap, XPathContext context) throws NoDynamicContextException
imap
- the map to be copiedcontext
- The XPath dynamic context. Used to define the implicit timezone for comparing
keys in this map, and also gives access to type information.NoDynamicContextException
- if the supplied context has no implicit timezone availablepublic static HashTrieMap singleton(AtomicValue key, Sequence value, XPathContext context) throws XPathException
key
- the key valuevalue
- the associated valuecontext
- dynamic evaluation context. Gives access to type information.XPathException
- if map mixes timezoned and timezoneless valuespublic static HashTrieMap copy(MapItem map, XPathContext context) throws XPathException
map
- the existing map to be copiedcontext
- the XPath dynamic contextXPathException
- if a dynamic error occurspublic int size()
public boolean isEmpty()
public AtomicType getKeyType()
getKeyType
in interface MapItem
public MapItem.TimeZoneStatus getTimeZoneStatus()
getTimeZoneStatus
in interface MapItem
public SequenceType getValueType()
getValueType
in interface MapItem
public HashTrieMap addEntry(AtomicValue key, Sequence value) throws XPathException
key
- the key of the new entryvalue
- the value associated with the new entryXPathException
- if adding the entry violates the rule against mixing keys with timezones
and keys with no timezonepublic boolean initialPut(AtomicValue key, Sequence value)
key
- the key of the new entry. Any existing entry with this key is replaced.value
- the value associated with the new entrypublic HashTrieMap remove(AtomicValue key) throws XPathException
remove
in interface MapItem
key
- the key of the entry to be removedXPathException
- if a dynamic error occurspublic Sequence get(AtomicValue key)
public KeyValuePair getKeyValuePair(AtomicValue key)
key
- the value of the keypublic AtomicIterator keys()
public Iterator<KeyValuePair> iterator()
iterator
in interface MapItem
iterator
in interface Iterable<KeyValuePair>
public FunctionItemType getFunctionItemType(TypeHierarchy th)
getFunctionItemType
in interface FunctionItem
th
- the type heirarchy cachepublic StructuredQName getFunctionName()
getFunctionName
in interface FunctionItem
public int getArity()
getArity
in interface FunctionItem
public Sequence call(XPathContext context, Sequence[] args) throws XPathException
call
in interface Callable
call
in interface FunctionItem
context
- the XPath dynamic evaluation contextargs
- the actual arguments to be suppliedXPathException
- if an error occurs evaluating
the supplied argumentpublic String getStringValue()
getStringValueCS()
should
be used. If the caller requires a string, this method is preferred.getStringValue
in interface GroundedValue
getStringValue
in interface Item
UnsupportedOperationException
- if the item is a function item (an unchecked exception
is used here to avoid introducing exception handling to a large number of paths where it is not
needed)getStringValueCS()
public CharSequence getStringValueCS()
X.getStringValueCS().toString()
returns a string that is equal to
X.getStringValue()
.
Note that two CharSequence values of different types should not be compared using equals(), and
for the same reason they should not be used as a key in a hash table.
If the calling code can handle any CharSequence, this method should
be used. If the caller requires a string, the getStringValue()
method is preferred.getStringValueCS
in interface GroundedValue
getStringValueCS
in interface Item
UnsupportedOperationException
- if the item is a function item (an unchecked exception
is used here to avoid introducing exception handling to a large number of paths where it is not
needed)getStringValue()
public SequenceIterator getTypedValue() throws XPathException
XPathException
- where no typed value is available, for example in the case of
an element with complex contentpublic boolean deepEquals(FunctionItem other, XPathContext context, AtomicComparer comparer, int flags) throws XPathException
deepEquals
in interface FunctionItem
other
- the other function itemcontext
- the dynamic evaluation contextcomparer
- the object to perform the comparisonflags
- options for how the comparison is performedXPathException
- if the comparison cannot be performedpublic MapItem itemAt(int n)
AbstractItem
itemAt
in interface GroundedValue
itemAt
in class AbstractItem
n
- the index of the required item, with 0 representing the first item in the sequencepublic boolean effectiveBooleanValue() throws XPathException
GroundedValue
effectiveBooleanValue
in interface GroundedValue
XPathException
- if the sequence has no effective boolean value (for example a sequence of two integers)Copyright (c) 2004-2014 Saxonica Limited. All rights reserved.