Class ByteBasedPNameTable

java.lang.Object
com.fasterxml.aalto.util.NameTable
com.fasterxml.aalto.in.ByteBasedPNameTable

public final class ByteBasedPNameTable extends NameTable
This is a symbol table implementation used for storing byte-based PNames, specifically, instances of (ByteBasedPName).
  • Constructor Details

    • ByteBasedPNameTable

      public ByteBasedPNameTable(int hashSize)
  • Method Details

    • mergeFromChild

      public boolean mergeFromChild(ByteBasedPNameTable child)
    • markAsShared

      public void markAsShared()
    • nuke

      public void nuke()
      Method used by test code, to reset state of the name table.
    • size

      public int size()
      Specified by:
      size in class NameTable
    • maybeDirty

      public boolean maybeDirty()
      Method called to check to quickly see if a child symbol table may have gotten additional entries. Used for checking to see if a child table should be merged into shared table.
      Specified by:
      maybeDirty in class NameTable
    • findSymbol

      public ByteBasedPName findSymbol(int hash, int firstQuad, int secondQuad)
      Finds and returns name matching the specified symbol, if such name already exists in the table; or if not, creates name object, adds to the table, and returns it.

      Note: separate methods to optimize common case of relatively short element/attribute names (8 or less ascii characters)

      Parameters:
      firstQuad - int32 containing first 4 bytes of the pname; if the whole name less than 4 bytes, padded with zero bytes in front (zero MSBs, ie. right aligned)
      secondQuad - int32 containing bytes 5 through 8 of the pname; if less than 8 bytes, padded with up to 4 zero bytes in front (zero MSBs, ie. right aligned)
      Returns:
      PName matching the symbol passed (or constructed for it)
    • findSymbol

      public ByteBasedPName findSymbol(int hash, int[] quads, int qlen)
      Finds and returns name matching the specified symbol, if such name already exists in the table; or if not, creates name object, adds to the table, and returns it.

      Note: this is the general purpose method that can be called for names of any length. However, if name is less than 9 bytes long, it is preferable to call the version optimized for short names.

      Parameters:
      quads - Array of int32s, each of which contain 4 bytes of encoded name
      qlen - Number of int32s, starting from index 0, in quads parameter
      Returns:
      PName matching the symbol passed (or constructed for it)
    • addSymbol

      public ByteBasedPName addSymbol(int hash, String symbolStr, int colonIx, int firstQuad, int secondQuad)
    • addSymbol

      public ByteBasedPName addSymbol(int hash, String symbolStr, int colonIx, int[] quads, int qlen)
    • calcHash

      public static final int calcHash(int firstQuad)
    • calcHash

      public static final int calcHash(int firstQuad, int secondQuad)
    • calcHash

      public static final int calcHash(int[] quads, int qlen)
    • calcQuads

      public static int[] calcQuads(byte[] wordBytes)
    • toString

      public String toString()
      Overrides:
      toString in class Object