Holds information about a given encoding, which is the Java name for the
encoding, the equivalent ISO name.
An object of this type has two useful methods
isInEncoding(char ch);
which can be called if the character is not the high one in
a surrogate pair and:
isInEncoding(char high, char low);
which can be called if the two characters from a high/low surrogate pair.
An EncodingInfo object is a node in a binary search tree. Such a node
will answer if a character is in the encoding, and do so for a given
range of unicode values (m_first to
m_last ). It will handle a certain range of values
explicitly (m_explFirst to m_explLast ).
If the unicode point is before that explicit range, that is it
is in the range m_first <= value < m_explFirst , then it will delegate to another EncodingInfo object for The root
of such a tree, m_before. Likewise for values in the range
m_explLast < value <= m_last , but delgating to m_after
Actually figuring out if a code point is in the encoding is expensive. So the
purpose of this tree is to cache such determinations, and not to build the
entire tree of information at the start, but only build up as much of the
tree as is used during the transformation.
This Class is not a public API, and should only be used internally within
the serializer.
|