ElementId instances. ElementId instances
represent both id definitions (values of element attributes that
have type ID in DTD), and references (values of element attributes
of type IDREF and IDREFS). These definitions and references are
stored for the purpose of verifying
that all referenced id values are defined, and that none are defined
more than once.Note
there are 2 somewhat distinct usage modes, by DTDValidator and by MSV-based validators. DTDs pass raw character arrays, whereas MSV-based validators operate on Strings. This is the main reason for 2 distinct sets of methods.
| Modifier and Type | Field and Description |
|---|---|
| protected static final int | DEFAULT_SIZE
Default initial table size; set so that usually it need not be expanded. |
| protected static final int | FILL_PCT
Let's use 80% fill factor... |
| protected ElementId | |
| protected static final int | |
| protected int | mIndexMask
Mask used to get index from hash values; equal to
|
| protected int | mSize
Current size (number of entries); needed to know if and when rehash. |
| protected int | mSizeThreshold
Limit that indicates maximum size this instance can hold before it needs to be expanded and rehashed. |
| protected ElementId[] | mTable
Actual hash table area |
| protected ElementId |
| Access | Constructor and Description |
|---|---|
| public | |
| public | ElementIdMap(int initialSize)
This constructor is mainly used for testing, as it can be sized appropriately to test rehashing etc. |
| Modifier and Type | Method and Description |
|---|---|
| public ElementId | addDefined(char[] buffer, int start, int len, int hash, Location loc, PrefixedName elemName, PrefixedName attrName)
Method called when an id definition is encountered. |
| public ElementId | |
| public ElementId | addReferenced(char[] buffer, int start, int len, int hash, Location loc, PrefixedName elemName, PrefixedName attrName)
Method called when a reference to id is encountered. |
| public ElementId | |
| public static int | calcHash(char[] buffer, int start, int
Length of String; has to be at least 1 (caller guarantees
this pre-condition) len)Implementation of a hashing method for variable length Strings. |
| public static int | |
| public ElementId | |
| private void | rehash()
Method called when size (number of entries) of symbol table grows so big that load factor is exceeded. |
| DEFAULT_SIZE | back to summary |
|---|---|
| protected static final int DEFAULT_SIZE Default initial table size; set so that usually it need not be expanded. | |
| FILL_PCT | back to summary |
|---|---|
| protected static final int FILL_PCT Let's use 80% fill factor... | |
| mHead | back to summary |
|---|---|
| protected ElementId mHead | |
| MIN_SIZE | back to summary |
|---|---|
| protected static final int MIN_SIZE | |
| mIndexMask | back to summary |
|---|---|
| protected int mIndexMask Mask used to get index from hash values; equal to
| |
| mSize | back to summary |
|---|---|
| protected int mSize Current size (number of entries); needed to know if and when rehash. | |
| mSizeThreshold | back to summary |
|---|---|
| protected int mSizeThreshold Limit that indicates maximum size this instance can hold before it needs to be expanded and rehashed. Calculated using fill factor passed in to constructor. | |
| mTable | back to summary |
|---|---|
| protected ElementId[] mTable Actual hash table area | |
| mTail | back to summary |
|---|---|
| protected ElementId mTail | |
| ElementIdMap | back to summary |
|---|---|
| public ElementIdMap() | |
| ElementIdMap | back to summary |
|---|---|
| public ElementIdMap(int initialSize) This constructor is mainly used for testing, as it can be sized appropriately to test rehashing etc. | |
| addDefined | back to summary |
|---|---|
| public ElementId addDefined(char[] buffer, int start, int len, int hash, Location loc, PrefixedName elemName, PrefixedName attrName) Method called when an id definition is encountered. If so, need to check if specified id entry (ref or definiton) exists. If not, need to add the definition marker. If it does exist, need to 'upgrade it', if it was a reference marker; otherwise need to just return the old entry, and expect caller to check for dups and report the error. | |
| addDefined | back to summary |
|---|---|
| public ElementId addDefined(String idStr, Location loc, PrefixedName elemName, PrefixedName attrName) | |
| addReferenced | back to summary |
|---|---|
| public ElementId addReferenced(char[] buffer, int start, int len, int hash, Location loc, PrefixedName elemName, PrefixedName attrName) Method called when a reference to id is encountered. If so, need to check if specified id entry (ref or definiton) exists; and if not, to add a reference marker. | |
| addReferenced | back to summary |
|---|---|
| public ElementId addReferenced(String idStr, Location loc, PrefixedName elemName, PrefixedName attrName) | |
| calcHash | back to summary |
|---|---|
| public static int calcHash(char[] buffer, int start, int len) Implementation of a hashing method for variable length Strings. Most of the time intention is that this calculation is done by caller during parsing, not here; however, sometimes it needs to be done for parsed "String" too. Note identical to
| |
| calcHash | back to summary |
|---|---|
public static int calcHash(String key)
| |
| getFirstUndefined | back to summary |
|---|---|
| public ElementId getFirstUndefined() | |
| rehash | back to summary |
|---|---|
| private void rehash() Method called when size (number of entries) of symbol table grows so big that load factor is exceeded. Since size has to remain power of two, arrays will then always be doubled. Main work is really redistributing old entries into new String/Bucket entries. | |