com.fasterxml.aalto.in

## 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 Summary

    Constructors
    Constructor and Description
    `ByteBasedPNameTable(int hashSize)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ByteBasedPName` | `addSymbol(int hash, String symbolStr, int colonIx, int[] quads, int qlen)`
    `ByteBasedPName` | `addSymbol(int hash, String symbolStr, int colonIx, int firstQuad, int secondQuad)`
    `static int` | `calcHash(int firstQuad)`
    `static int` | `calcHash(int[] quads, int qlen)`
    `static int` | `calcHash(int firstQuad, int secondQuad)`
    `static int[]` | `calcQuads(byte[] wordBytes)`
    `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.
    `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.
    `void` | `markAsShared()`
    `boolean` | `maybeDirty()` Method called to check to quickly see if a child symbol table may have gotten additional entries.
    `boolean` | `mergeFromChild(ByteBasedPNameTable child)`
    `void` | `nuke()` Method used by test code, to reset state of the name table.
    `int` | `size()`
    `String` | `toDebugString()`
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ByteBasedPNameTable

          public ByteBasedPNameTable(int hashSize)

  - ### Method Detail

    - #### 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`

    - #### toDebugString

          public String toDebugString()

Copyright © 2018 FasterXML. All rights reserved.